处理坏代码的 4 种策略


坏代码时有发生——但你不需要成为坏人来打败它。
从更轻松的角度来看,糟糕的坏代码还会产生充足的就业机会:

  • 需要许多优秀的开发人员修复错误的代码。
  • 需要一两个高级开发人员审查代码并确保它不会再次变坏。
  • 可能需要不时地咨询糟糕的程序员(写出混乱的逻辑的明星),以便从这些胡言乱语中找出一些道理。

优秀的开发人员避免主观性,对糟糕的代码给予建设性的、客观的批评,这样它就不会再重复了。他们将其转化为学习和分享的机会,让每个人都能从中受益。
以下是优秀开发人员处理不良代码的一些方法:

1. 确定问题
带着好奇心和对写问题的人的同情心来对待这个问题。一般来说,代码的问题是有多种写法,没有一种方法是最好的。因此,在你评估代码之前,试着找出代码背后的原因。设身处地的为其他开发者着想,找出问题的症结所在。

很多时候,程序员都很固执。他们不喜欢别人告诉他们的错误。正确的方法是与对方换位思考,找出是什么让他们首先写出如此猖獗的GOTO,如此深入嵌套的switch语句,以及如此晦涩的命名,你很快就会明白其中的原因。

通过识别问题,你不仅从他们的角度看问题,而且你还可能想出一个具体的攻击路线来纠正代码,而不是在黑暗中乱撞。


2.审慎地提问
弗朗西斯-培根曾正确地说过。

"谨慎的问题是智慧的二分之一"。

一旦你确定了代码的问题,下一步就是和你的同事坐在一起,提出更深入的问题。这里的关键是审慎。你的最佳选择是确保问答环节不会退化成残酷的西班牙宗教裁判所。

对于历史爱好者来说,西班牙宗教裁判所是由阿拉贡的斐迪南二世和卡斯蒂利亚的伊莎贝拉一世在托克马达的协助下发起的。

在西班牙宗教裁判所期间,许多人在街道上的人群面前被烧死。实际上,西班牙宗教裁判所的作用是巩固新统一的西班牙王国的君主权力,但它是通过臭名昭著的残暴手段实现这一目的的。

通过提出合乎逻辑的问题,你不仅是在巩固你对问题的理解,也是在让其他开发者自我识别他的错误,并教会他正确的询问,他每天在写代码之前都需要问自己。通过提问,你也在表明你对他的观点持开放态度。当你的同事感到被尊重时,他们就不太容易产生防卫心理。

而一旦你找到了错误和理由,你就有责任将这些至理名言传遍整个团队,这样就不会有人再写出蹩脚的代码。

3.抑制你的改写本能冲动
Anthony J. D'Angelo一语中的,他说。

"不要重新发明轮子,只是重新调整它。"

编写高质量的代码比写得不好的代码在前期需要更多的时间。有时,更快地 "把东西拿出来 "可能会有商业意义。金伯-洛克哈特在一次在黑客峰会演讲中说,开发人员为解决糟糕的代码所做的最大错误之一是再次重写代码。重写代码在大多数情况下不是解决坏代码的办法。在采取这一步骤之前,有很多问题要问。

重写的代码会比旧版本的好吗?

成本效益分析是否值得努力?

所有的旧代码真的很糟糕,还是我们可以重用其中的很多内容?

等等....

她提出了一个处理坏代码的3步方法。

对代码进行优先排序。什么需要首先被修复?我们可以忍受代码的其他部分吗?

把坏的代码封装起来。保持旧代码的运行,但将其与新代码分开,将其封装在一个模块中,这意味着除了修复它之外,没有人可以添加到它。旧的代码仍然可以被调用,但将其封装起来可以防止坏的代码扩散。

弃用坏代码。明确标记坏代码,这样就不会有人复制坏代码,使问题进一步复杂化。洛克哈特建议删除坏代码,但要谨慎行事。投入几个小时,一个星期来创建一个自动化系统,以便识别要删除的代码,这将是一个长期清理系统的好方法。

关键是要取其精华,去其糟粕,以缓慢而稳定的方式消除最坏的东西。不是所有的,坏的代码都是因为技术债务,如果有好的地方,我们应该聪明地重用和调整。

4.最后,要谦虚
Zig Zigler曾正确地说过。

"谦虚将比傲慢打开更多的门。"

骄傲是许多悲剧英雄的败笔。

简-奥斯汀的名著《傲慢与偏见》中的达西先生在赢得伊丽莎白-贝内特的爱之前,必须放下他的傲慢。但丁把它列为七宗罪之一。正如《箴言》中著名的(经常被错误引用的)经文告诫我们的那样,它 "在毁灭之前,傲慢的精神在堕落之前"。

这一点是毫无疑问的。定义真正的谦卑的东西是一种安静的理解,即你擅长你所做的事情,但你并不期望别人过度地赞美你。

所以,如果你已经修复了代码,不要让你的自尊心把你玩弄于股掌之间。不要用电子邮件向整个团队发送垃圾邮件。不要一有机会就在屋顶上大喊大叫。你也不是无懈可击的。你也可能最终陷入同样的境地,当这种情况发生时,你需要大家的帮助和支持。永远不要忘记这一点。

当然,这并不意味着,你不应该教育他人和分享你的智慧之珠。你需要促进与同事之间的支持性环境,提高团队的整体产出。然而,在分享知识和袒护知识之间有一条模糊的界限,你应该确保为了包括你自己在内的所有人的福祉,你永远不要越过这条界限。


因此,简而言之,你要以开放的心态对待坏的代码,你要学习,你要改进,然后你要教育别人去改进。

banq:从犯错中学习,勇于犯错,才有更多学习机会,总是考试第一名并没有让你有更多学习的机会,只会越来越封闭。