Bug 编程速度又快 数量又少 程序员如何做到
有网友在 Quora 提问:如何把自己训练得『编程速度又快,Bug 数量又少』?上方是 Glyn Williams 的回复很精彩,4.5 k 赞。
三个程序员被要求穿过一片田地,抵达另一侧的房子。
菜鸟程序员目测了一下之间很短的距离,说:“不远!我只需十分钟。”
资深程序员看了一眼田地,想了一会,说:“我应该能在一天内过去。”菜鸟程序员很惊讶。
大神程序员看了一眼田地,说:“看起来要十分钟,但我感觉十五分钟应该够了。” 资深程序员冷笑了一声。
菜鸟程序员登程了,但只过了一会,地雷爆炸了,炸出了渺小的洞。这下他必定偏移预约的路途,原路前往,重复尝试穿过田地。最后他花了两天抵达目标地,到的时刻颤颤发抖,还受了伤。
资深程序员一登程就匍匐行进,细心肠拍打低空,寻觅地雷,只要在安保的时刻才行进。他在一天的期间内小心审慎地缓慢爬过了这片地,只触发了几个地雷。
大神程序员登程之后径直穿过了田地,十分果决。他只用了十分钟就到了另一边。
“你是怎样做到的?”另外两团体问道,“那些地雷怎样没有伤到你?”
“很便捷,”他回答道,“我最后就没有埋地雷。”
当咱们遇到咱们(或其他人)给自己埋下的逻辑炸弹,编程会变得很艰巨。咱们天天在编写逻辑炸弹。它们就在地表下静静地待着,等着爆炸。一旦爆炸,通常就带来无法预测的重大结果。
随着新的代码模块被添加到名目中,名目标复杂度会回升。这种回升不是线性的,而是呈某种指数方式。
程序员的精神是一种有限的资源,所以这种爆炸式增长的复杂度最终会淹没程序员。你的大脑最终会不堪重负,这是一个转机点。
这就是炸弹开局爆炸的时辰。有各种各样的炸弹:在遍历时修正数组,数组下标偶然变成正数,另一个线程在你的函数口头的终点和终点两边扭转对象的形态。轰,轰,轰……
我以为最快捷牢靠的程序设计须要造就一种防止这些疑问的格调。
编写明白表白行为的代码。选用无心义、准确、无歧义的符号名字。严厉口头命名方案,不要用不同的单词形容同一个事物。
假设有,驳回最便捷的处置方案。不要为速度提升,而是为可读性和透明度提升。
假设你在最后编写代码时没有留意可重用性,不要诈骗自己置信代码可以很神奇地被重用。同样,应该从一种情景着手,坚持代码的详细性。假设值得修正代码让它普通化,那么应该做好彻底重写的预备。