楼主

59914发表于 2019-11-27 09:46:57
只看该作者楼主

【综合】【码手防御-10】无错编程态度 [复制链接]

作者:HW-HM


上一篇文章【码手防御-9】编程风险,我们讨论了编程中的风险,这一篇我们将讨论有助于编写无错代码的态度。

Most bugs are due to mindlessness.不管你信不信,反正我是信了。

错误不会自己消失。错误既不会自己产生,也不会自己改正。如果你得到了一个错误报告,但这个错误不再出现了。不要假设测试员发生了幻觉,而要努力查找错误,甚至要恢复程序的老版本。

解决错误是最最最重要的事情。马上修改错误,不要推迟到最后。

修改错误要治本,不要治表。当你跟踪查到一个错误时,总要问一下自己,这个错误是否会是一个大错误的症状。当然,修改一个刚刚追踪到的症状很容易,但是要努力找到真正的起因。

除非关系产品的成败,否则不要整理代码,也就是说不要随意优化代码。优化代码前必须先读懂原来的代码,并且优化后的代码必须经过严格的测试(包括功能和性能)。哪怕是修改一行代码也要测试。

不允许没有必要的灵活性。记住灵活与容易使用并不是一回事。在你设计函数和特征时,重点是使之容易使用;如果它们仅仅是灵活的,象realloc函数那样,那么就没法使得代码更加有用;相反地,使得发现错误变得更困难了。

在找到正确的解法之前,不要一味地“试”,要花时间寻求正确的解。试对往往意味着蒙对,花点时间阅读参考手册吧。

尽量编写和测试小块代码,建议采用TDD。即使测试代码会影响进度,也要坚持测试代码。写一大堆代码,然后再测试,测试时可能都忘了写了些啥了,而且这样很容易写出复杂度高的不利于测试的代码。写一小块,测一小块,可以使你写出复杂度低方便测试的代码,在稳固的基础上叠加代码。

测试代码的责任不在测试员身上,而是程序员自己的责任。测试人员负责的是产品功能和质量,他们不需要直接测试你的代码,测试代码的责任在程序员自己。

不要责怪测试员发现了你的错误。每当测试员向你报告你的代码中有某个错误时,你最先的反应是震惊和不相信,你本来就没想到测试员会在你的代码中发现错误;你的第二个反应应该是表示感谢,因为测试员帮助你避免交付错误。

建立自己优先级列表并坚持之:你必须养成经常询问怎样编写代码的习惯。如下的两个优先级列表,你觉得哪个更能写出对产品有利的代码?


张三的优先级列表

李四的优先级列表

正确性

正确性

全局效率

可测试性

大小

全局效率

局部效率

可维护性/可读性

个人方便性

一致性

可维护性/可读性

大小

个人表达方式

局部效率

可测试性

个人表达方式

一致性

个人方便性

经常问自己三个问题:

我怎样才能自动检测出错误?

我怎样才能防止错误?

这种想法和习惯是帮助我编写无错代码呢还是妨碍了我编写无错代码?

举报
发表于 2019-11-27 14:18:21
只看该作者沙发

经常问自己三个问题:

我怎样才能自动检测出错误?

我怎样才能防止错误?

这种想法和习惯是帮助我编写无错代码呢还是妨碍了我编写无错代码?


举报
楼主发表于 2019-11-27 14:48:11
只看该作者板凳
举报
楼主发表于 2019-11-27 14:48:22
只看该作者地板
举报
楼主发表于 2019-11-27 14:48:38
只看该作者5 #
举报
楼主发表于 2019-11-27 14:48:50
只看该作者6 #
举报
楼主发表于 2019-11-27 14:49:02
只看该作者7 #
举报
楼主发表于 2019-11-27 14:49:11
只看该作者8 #
举报
楼主发表于 2019-11-27 14:49:22
只看该作者9 #
举报
楼主发表于 2019-11-27 14:49:34
只看该作者10 #
举报

您需要登录后才可以回帖

登录注册
发表回复