【外评】我们应该将编程法则视作谚语

我相信,只要简单地理解我们所有的编程法则都应被理解为谚语而非定律,我们围绕软件开发实践所发生的许多争论都可以避免。

如果你了解谚语,那么你就会知道,每一句谚语都有一个相同和相反的谚语

因此,这意味着说 “DRY”(不要重复自己) “WET”(一切都要写两遍)都没有问题。

这意味着,我们可以引用 Knuth 的名言 “过早优化是万恶之源”,同时也可以相信 “性能是一种特性”

我们可以理解并应用 “关注点分离”,同时也能看到行为局部性的价值

YAGNI 有它的用武之地,YAGNI 也有它的禁忌之处。

以上都不涉及逻辑矛盾。谚语用精炼的语句概括了一点智慧,但你仍然需要学会正确运用这些智慧。

好的谚语还应该让你思考。在你跃跃欲试去做一件可能会坏事的事情之前,它们会让你放慢脚步,或者帮助你反思哪些地方出了问题。

箴言 26:4-5 中的一对圣经谚语很好地说明了这两点:

4 不要按照愚人的愚蠢回答他、
否则你自己也会像他一样。
5 愚昧人的愚昧,你要照着他的愚昧回答他、
否则他在自己眼中就聪明了。

第一步是你应该思考:在这种情况下值得争论吗?

第二步,当你与一个人有过多次失败的互动时,你应该想:还值得与他争论吗?如果对方是个傻瓜,那你就赢不了。

第三步是当你这样想的时候:我发现从来没有人和我争论过很长时间。这是因为我总是对的,还是因为我是一个不愿意输掉争论的傻瓜?

因此,在编程时,你不应该只是从相互矛盾的谚语中选择适合你想做的事,你应该意识到自己可能会做傻事,并在继续之前进行反思。

如果你似乎要违背积累的智慧,你就需要思考这句谚语的出处,以及忽视它的后果。

例如,对于 “DRY”,你需要明白它并不是指重复或枯燥的代码,而是指将相同的知识嵌入到系统的多个地方,以及当你要改变某些东西时,这将是一个怎样的问题。而 “WET “则是指不成熟的抽象比重复的代价更高

一旦你静下心来思考,你就能找出哪种方法适用于你的情况,以及如果你选择忽略这句谚语,你能做些什么来减轻可能遇到的困难–换句话说,你可以运用切斯特顿的栅栏(Chesterton’s Fence.)

本文文字及图片出自 Programming mantras are proverbs

你也许感兴趣的:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注