发布网友 发布时间:2022-12-26 21:37
共1个回答
热心网友 时间:2023-10-17 06:09
很多初学者包括一些有经验的程序员,在敲完代码的最后一个字符后,马上开始编译和运行,迫不急待的想看到自己的工作成果。
快速反馈有助于满足自己的成就感,但是同时也会带来一些问题:让编译器帮你检查语法错误可以省些时间,但程序员往往太专注这些错误了,以为改完这些错误就万事大吉了。
其实不然,很多错误编译器是发现不了的,像内存错误和线程死锁等等,这些错误可能逃过简单的测试而遗留在代码中,直到集成测试或者软件发布之后才暴露出来,那时就要花更大代价去修改它们了。
修改完编译错误之后就是运行程序了,运行起来有错误,就轮到调试器上场了。
花了不少时间去调试,发现无非是些低级错误,或许你会自责自己粗心大意,但是下次可能还是犯同样的错误。
更严重的是这种debug&fix的方法,往往是头痛医头脚痛医脚,导致低质量的软件。
让编译器帮你检查语法错误,让调试器帮你查BUG,这是天经地义的事,但这确实是又慢又烂的方法。
就像你要到离家东边1000米的地方开会,结果你往西边走,又是坐车又是搭飞机,花了一周时间,也绕着地球转了一周,终于到了会议室,你还大发感慨说,现代的交通工具真是发达啊。
其实你往东走,走路也只要十多分钟就到了。
不管你的调试技巧有多高,都不如一次性写好更高效。
下面是我在阅读自己代码时的一些方法:检查常见错误第一遍阅读时主要关注语法错误、代码排版和命名规则等等问题,只要看不顺眼就修改它们。
读完之后,你的代码很少有低级错误,看起来也比较干净清爽。
第二遍重点关注常见编程错误,比如内存泄露和可能的越界访问,变量没有初始化,函数忘记返回值等等,在后面的章节中,我会介绍这些常见错误,避免这些错误可以为你省大量的时间。
如果有时间,在测试完成之后,还可以考虑是否有更好的实现方法,甚至尝试重新去实现它们。
说了读者可能不相信,在学习编程的前几年,我经常重写整个模块,只我觉得能做得更好,能验证我的一些想法,或提高我的编程能力,即使连续几天加班到晚上十一点,我也要重写它们。
模拟计算机执行常见错误是比较死的东西,按照检查列表一条一条的做就行了。
有些逻辑通常不是这么直观的,这时可以自己模拟计算机去执行,假想你自己是计算机,读入这些代码时你会怎么处理。
北大青鸟http://www.kmbdqn.cn/认为这种方法能有效的完善我们的思路,考虑不同的输入数据,各种边界值,这能帮助我们想到一些没有处理的情况,让程序的逻辑更严谨。