译自https://lackofimagination.org/2024/05/i-dont-trust-my-own-code/,本文对原文内容做二次修改。
文章目录
最近,我和团队中的一位初级开发者(我们叫他 Alan)进行了一次交流。我们讨论了一个新的通知功能,该功能将用于向成千上万的人发送提醒邮件,如果他们在过去的一个月左右忘记输入某些数据,邮件会提醒他们。
Alan 确信他写的代码是正确的。“我已经进行了充分的测试,”他说。我多年来从很多开发者口中听过类似的话,所以我叹了口气:“我已经有二十多年编程经验了,但即便是我自己也不完全信任我写的代码。”
你大概可以猜到,Alan 所说的“充分测试”的代码最终还是出了问题。在测试过程中,发现了许多bug,很多都是因为他对某些事情做出了错误的假设。
我并不是在批评 Alan。事实上,我是雇佣了他和其他团队成员的人。虽然他经验尚浅,且有点过于自信,但总体来说他写的代码还算不错,并且一直在努力提升自己,这种不断进步的态度在我看来比经验更为重要。
至于我自己,我当然不是世界上最优秀的软件开发者。我甚至不认为自己是特别优秀的。我见过不少写得比我差的开发者,也见过少数写得比我好的开发者。从统计角度来看,我算是中上水平。到底有多上水平,我难以界定,但只要意识到自己的局限性,就不重要了。
“一个合格的程序员完全意识到自己头脑的局限;因此,他以谦虚的态度面对编程任务,其中之一便是避免那些像瘟疫般的巧妙技巧。” — Edsger Dijkstra
巧妙的技巧虽然偶尔很诱人,但当你六个月后再回到这段代码时,你能记得当初是怎么解决问题的吗?如果你需要逐行检查代码才能理解它在做什么,那么其他开发者也难以理解。
常有人说,写代码比读代码容易,但这并不一定非得如此。当编写较长的代码段时,我发现偶尔停下来回顾一下自己的代码,就像是第一次看到它一样,帮助我发现潜在问题。我会问自己一些基本问题:我的函数是否足够简短?它们的命名是否具有描述性?复杂的逻辑是否封装在独立的函数中?我传递的参数是否过多?等等。
假设我们写的代码合理易
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



