« skynet 网络层的一点小优化 | 返回首页 | 5 岁小朋友的游戏历程 »

易于修改原则

这个月来,我已经在从事《程序员修炼之道》第二版的翻译。到现在已经超过十万字,几乎是全书的一半了。

很难很累。翻译和阅读是两码事,就算自己理解了,想说清楚也是很难的。何况有些句子理解起来摸棱两可,想理解透彻也不是那么容易的事。毕竟是别人的思想,凡思想都非真理,没有太多对错可言,翻译者只求能准确表达。

不过越是深入,越是觉得自己在做一件伟大的事。这本书一如二十年前的那一版一样,字字珠玑。能给无数程序员引路。有些道理过去讲得不甚透彻的,经过数十年的历练,作者看得更通透了。

比如,有一条过去没有提及的原则,在这一版中放在了重中之重的位置。那就是:ETC 原则,Easier To Change ,易于修改。

我当然明白,易于修改非常重要。但从未想过,它可以是一切原则的基石。

在上一版中,作者言必提 DRY 原则,Don't Repeat Yourself ,不要重复。我觉得说得还不够好,我自己更喜欢 Unix 编程艺术中的提法 SPOT :Single Point Of Truth ,唯一真理。但这次,DRY 被放在了一个次要的位置,和本书提出的其他原则一起,围绕着一个更基本的原则谈起。为什么不能重复?为什么真理只应写在一个地方?

因为,我们所作的一切,都是为了更容易修改。

当真理只存在一个地方,那么在需要修改它的时候,就只需要改动一处,更容易修改了。

为什么需要解耦模块。因为耦合在一起的模块很难修改。在修改时,要么你要花时间搞清楚关联之处都在哪些地方;要么你不去搞清楚,只改一处,结果出了问题,再花时间弄明白问题出在哪里,有什么牵连之处忘记了。解耦之后,可以放心的只修改一处就够了,更容易修改。

为什么我们要给函数名,变量名取个好名字。取名为什么是很重要的事?因为好的名字方便阅读,而修改的前提就是阅读。好的名字让修改更容易。

……

说到取名,在翻译每章时,我会在作者篇头引用的名言翻译上颇费一番功夫。仔细查找出处,推敲为什么本章要引用这句话。许多句子我过去从没了解过,搜索下去会被原著所吸引。

前天翻到作者引用《地海传奇》中的一句话,"To light a candle is to cast a shadow" ,我引用了蔡美玲的译文 “点亮一盏烛光,便投出一道阴影。” ,编辑说 点亮 ... 烛光 有点语法问题,建议改成 烛火。我在推敲之余,对书产生了兴趣,在 kindle 上买了一套。结果读了两页就停不下来。周末一口气读完了前三本。

名字为什么重要?《地海传奇》能给我们答案 :)

Comments

etc不是易于修改(modify)而是易于改变(change)吧。修改感觉有侧重于修改源码的意思,但这就违背开闭原则了吧。

推翻重做

期待出版~

这个『易于修改原则』是不是和面向对象的『开闭原则』有点矛盾?开闭原则讲究对扩展开放,对修改封闭。就算不用面向对象编程,前一句改成『对组合开放』,后一句『对修改封闭』还是应该保留的。

编辑一定是学理的

领会一句话需要多少幸酸

期待,等待 ⌛️。

Easier To Change 棒棒哒

大学时完全被第一版生动形象故事/理念吸引,当然更期待云风版的,难得!

期待早日完成。

风哥自己什么时候出本书,不枉毕生经纶,留一传世之作。

看过第一版,期待一下第二版 :)

Post a comment

非这个主题相关的留言请到:留言本