【干货】11 条编程经验分享

codexs 2019-05-20 原文

【干货】11 条编程经验分享

从小白到入门,从入门到进阶,从进阶到高级,从高级到资深,再从资深走不同到路线。这条路可以说是大多数程序员的发展路线,在这个过程中经验就显得尤为重要,尤其是后期,经验可以占据很大的优势。

 

1. 从小事做起,然后再扩展

无论是创建一个新的系统,还是在现有的系统中添加新的功能,我总是从一个简单到几乎没有任何所需功能的版本开始,然后再一步一步地解决问题,直到满意为止。我从来没有妄想过能够一步登天。相反,我一边开发一边学习,同时新掌握的信息还可以用于解决方案中。 我很喜欢 John Gall 的这句话:“复杂系统总是源于简单系统的演化。”

 

2. 一次只做一件事

当我们在开发时,碰到测试失败和功能无效的情况,如果你一次只研究一个问题,那将会更容易找到问题的关键。换言之,就是使用短迭代。必须确保这个问题解决之后,再转移到另一个问题上。这适用于向下提交。如果在你添加新功能之前需要先重构代码,那么先提交重构,然后再添加新的功能。

 

3. 尽早地添加日志和错误处理

在开发新系统时,我做的第一件事就是添加日志和错误处理,因为这两者从一开始就非常有用。对系统来说它比一大把代码更有用,你需要一些了解程序状态的方法。如果系统不能照常工作,那么你就需要知道程序中发生了什么——这是日志的作用。错误处理也是如此——错误和异常越早处理越好。

 

4. 每一行新代码必须至少执行一次

在你真正完成一个功能之前,你必须对它进行测试。不然,你怎么知道它是不是按照你的想法在执行呢?通常情况下,最好的方法是通过自动测试,但并非总是如此。不过,不管怎么说,每一行新代码必须至少执行一次。 一般,我们想触发某种条件很难。但幸运的是,我们可以作弊。例如,数据的错误处理可以通过临时拼写错一个列名来触发。或者,一个if语句可以暂时颠倒过来(从 if error 变成 if not error),这样来触发那些平时很难触发的条件,这样只是为了确定代码是否正常运行和它会出现什么结果。有时,我发现有一些行代码永远都不会被运行。当我们做代码检查是它看起来没有什么问题,但就是不工作。你要避免这样的尴尬状况,如果你想你的每一行新代码都会被执行。

 

5. 在整体测试之前先进行模块测试

先进行部分模块测试可以节省时间。通常说来,我们在整合不同的模块时也会出现问题,例如模块之间的接口不匹配。但是如果我们能够信任各个组件的话,那么跟踪集成问题就会变得简单得多。

 

 

6. 所有事情所花费的时间总是比你预期的要长

特别是在编程中,即使一切进展顺利,我们也很难对功能所需的时间做出正确的预算。并且,开发软件时碰到各种意想不到的问题是非常常见的。一个简单的合并操作会导致一系列小bug,一次框架升级意味着一些函数必须改变或者一些API不按照你想象的那样工作。

 

Hofstadter Law( 霍夫施塔特定律)其实道出了真谛:做事所花费的时间总是比你预期的要长,即使你在预期中已经考虑了 Hofstadter Law( 霍夫施塔特定律)。

 

7. 先了解现有的代码

大多数的编码都需要以某种方式改变现有的代码。即使是新功能,也需要适应现有的程序。所以,在你加进去新的内容前,首先需要了解当前的解决方案。否则,你一不小心就很有可能会打破现有的功能。这意味着,阅读代码和编写代码都是必要的技能。这也是为什么看似微小的变化仍可能需要很长时间才能解决的原因之一,因为你首先必须了解上下文。

 

8.阅读和运行代码

幸运的是,对于理解代码,我们有两种互补的方法。你可以阅读代码,也可以运行代码。运行代码的确是个非常棒的好方法。所以,请确保充分利用这两种方法。

 

9. Bug 总是难免的

我不喜欢那些宣称软件开发可以“一蹴而就”的高谈阔论。不论你再怎么努力,bug总是难免的(BUG的定义基本上是:“我们没有想到”)。最好能够做成可以快速故障排除、修复bug和部署修复的系统。

 

10. 解决故障报告

每个开发人员都应该花时间去处理来自客户的故障报告,并修复bug。这能让你更好地理解客户的意图,明白如何使用系统,知道排除故障的难易程度,了解系统的设计情况。这也是为自己的开发成果负责的好方法。不要错过这些好处。

 

11. 重现问题

修复bug的第一步就是重现问题。然后你得确保修复之后,问题能够彻彻底底地消失。这样一个简单的规则,可以确保你不会误将非问题当作是问题,并确保解决方案真的能够奏效。

 

发表于 2019-05-20 15:48 逆锋起笔 阅读() 评论() 编辑 收藏

 

版权声明:本文为codexs原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/codexs/p/10894541.html

【干货】11 条编程经验分享的更多相关文章

  1. django项目部署上线

    django项目部署上线 前言 完善的django项目上线,有很多种上线的方法,比如apache, uwsgi […]...

  2. Docker最全教程——Redis容器化以及排行榜实战(十三)

    前言 容器教程的路还很长,笔者尽量根据实践来不断地完善。由于在编写的过程中还会有完善和补充,后续可能会以番外来 […]...

  3. Docker与k8s的恩怨情仇(三)—后浪Docker来势汹汹

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 上一节我们为大家介 […]...

  4. 程序员在写作这条路上到底能走多远?

    01 杨过这辈子什么时候最痛苦?被郭襄她姐砍掉了一只胳膊的时候,那时他身中情花之毒,活不了多久了,他最爱的姑姑 […]...

  5. 记一次程序员在办公室里的“撕逼”经历

    有人的地方就有江湖,有江湖的地方就有“撕逼”。程序员也不例外。 上次说到公司来了个名校毕业生小李,在公司表现非 […]...

  6. iReport4.1.1无法正常启动或者闪退或者JDK8不兼容的苦恼

    公司里面再用iReport的时候,我也安装使用了. 但是面临一个问题   我的iReport始终不能打开,困绕 […]...

  7. Ubuntu18.04 安装 oh-my-zsh

    目录 Ubuntu18.04 安装 oh-my-zsh  目录 安装zsh 安装curl  安装oh-my-z […]...

  8. 致那些年追寻C语言编程的青春, 从语法, 到界面, 再到算法, 只有这些了

    那些年学C/C++的我做过这些项目,这些年正在学习的你们做过什么,纯属装逼娱乐,请勿模仿。 懵懂期 那时还是彩 […]...

随机推荐

  1. 谈谈我的高中阶段学习情况以及大学现状,还有对未来的规划和憧憬

    谈谈我的高中阶段学习情况以及大学现状,还有对未来的规划和憧憬 作者:Luosd     时间:2017年春节 […]...

  2. Windows下Apache+PHP+MySQL搭建web服务器

    Apache+PHP+MySQL搭建服务器 工欲善其事必先利其器。 最近由于电脑出了问题不得不重新安装需要的文 […]...

  3. Proxy:简单小巧又强大好用的代理系统

    之前的文章介绍了许多我们在用的DevOps相关的工具系统,例如:方便创建多套运行环境的Alodi,对运维友好的 […]...

  4. 框架 Spring Boot 技术入门到整合 12-1 Springboot中如何使用拦截器

    0    课程地址  https://www.imooc.com/video/16794   1    本节重 […]...

  5. Java零基础系列教程013Java多态

    配套视频教程 本文B站配套视频教程 问题 宠物饿了,需要主人给宠物喂食 不同宠物吃的东西不一样,狗吃骨头,企鹅 […]...

  6. pdf转word

     方法一: 如果PDF文档中是可以选择的纯文字,那你直接复制粘贴即可,如果是不可选择的纯文字的话,就可以按以下 […]...

  7. 谈谈 Win8 自带的特殊 Flash Player

    Windows 8 自带了用于 Internet Explorer 10 的 Flash 播放器,这点相信大家 […]...

  8. python smtplib模块实现发送邮件

    #send_mail.py #send_mail.py #构造邮件内容 MIMETEXT #发送邮件:登录sm […]...

展开目录

目录导航