我的编程习惯,希望能给你带来帮助。先从小事着手,而后逐步拓展。不管是构建新系统,还是给现有系统增添新功能,我都会先从一个功能近乎为零的简单版本起步。接着逐步解决问题,直至满意,从不奢望一蹴而就。我在开发过程中不断学习,新学到的知识还能用于解决问题。我特别欣赏John Gall所说的复杂系统皆由简单系统演化而来这句话。每次仅做一件事。开发过程中,遇到测试失败和功能无效的状况时,一次只研究一个问题会更易找到关键所在,也就是采用短迭代。要确保一个问题解决后再转向下一个问题,这对向下提交也适用。若添加新功能前需重构代码,那就先提交重构内容,再添加新功能。
3. 尽早添加日志与错误处理功能。开发新系统时,我首先会添加日志与错误处理。从一开始,这二者就极为有用,对系统而言,其价值胜过许多代码,毕竟得有了解程序状态的途径。若系统无法正常运行,就得知晓程序中发生了何事,这就是日志的用处。错误处理也一样,错误与异常越早处理越佳。4. 每行新代码都要至少执行一次。在真正实现一个功能之前,必须对其进行测试。否则,怎么能知晓它是否按照预期执行?通常,自动测试是最佳方式,但也并非全然如此。不管怎样,每行新代码都至少要执行一次。一般而言,触发某些条件是比较困难的。不过,好在可以采用一些取巧的办法。比如,通过临时写错一个列名来触发数据的错误处理;或者将一个if语句暂时反转(从if error改为if not error),以此触发那些平时难以触发的条件,目的只是为了确定代码能否正常运行以及会产生何种结果。有时候,我会发现有些代码行永远不会被执行。在代码检查时,这些代码看起来没问题,但就是无法运行。如果想要每行新代码都被执行,就必须避免这种尴尬情况。在整体测试前,先开展模块测试。先对部分模块进行测试可节省时间。一般而言,整合不同模块时也会有问题,像模块间接口不匹配这种。但要是能信赖各个组件,那追踪集成问题就会简单许多。
6. 所有事耗费的时间往往比你预想的长。在编程里,即便诸事顺遂,我们也难以准确预估功能开发所需的时长。而且,开发软件时遇到各种始料未及的问题是常事。一个简单的合并操作可能引发一连串小故障,框架的一次升级会使部分函数必须改动,或者某些API的运行不符合预期。霍夫施塔特定律说出了一个真相:做事情耗费的时间永远比你预想的久,即便你在预想时已经把霍夫施塔特定律考虑进去了。7. 先对现有代码进行了解。
8. 阅读代码并运行代码。幸运的是,理解代码有两种互补的方法,即阅读代码与运行代码。运行代码是很不错的方法。所以,务必要充分利用这两种方法。9. 出现Bug总是难以避免的。我很反感那些声称软件开发能够一步到位的夸夸其谈。不管你有多努力,bug总是会存在的(BUG大体可定义为我们未曾想到的情况)。最好是构建一个能快速排查故障、修复bug并部署修复内容的系统。
10. 处理故障报告。开发人员都应花时间处理客户的故障报告并修复bug。这有助于理解客户意图、系统使用方式、故障排除难度和系统设计情况,是对自身开发成果负责的好方式,这些好处不容错过。11. 问题再次出现。修复bug的首要步骤是重现问题。之后要保证修复后问题完全消失。这个简单规则能防止将非问题认作问题,还能确保解决方案有效。
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号