« 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 的时候,将 Change 翻译成 变更 。 但是针对文中一些上下文,会有 变更更容易 ,这样的说法,连续两个 更字读起来有些别扭。故而全部改为了修改。 今天想了一下,“修改”在中文语境下,的确比“变更”有更狭隘的语义。所以想恢复之前的译法。不过会根据上下文把 Change 翻译成 “变更”“改变”“变化”以及“修改”。
我认为 modify 是 change 的一种而已,ETC 说的是 易于 Change ,这是对 Change 的难易做出评价。 开闭原则的 闭 讲得是尽量不改,谈是要不要去做。 做不要去做,和做起来是否容易,是两个维度的事情。 类似的还有 tpp 后面一章谈到 test ,说我们要在 code 时刻思考 test ,但又说,其实有时 test 是不必的。这并不矛盾。test 带来的好处在思考怎么去 test 的时候就获得了,真的去做就是另一件事了。 所以写代码的过程保持写的东西容易修改,和尽量不要去改实现,并不相悖。
etc不是易于修改(modify)而是易于改变(change)吧。修改感觉有侧重于修改源码的意思,但这就违背开闭原则了吧。
推翻重做
期待出版~
这个『易于修改原则』是不是和面向对象的『开闭原则』有点矛盾?开闭原则讲究对扩展开放,对修改封闭。就算不用面向对象编程,前一句改成『对组合开放』,后一句『对修改封闭』还是应该保留的。
编辑一定是学理的
领会一句话需要多少幸酸
期待,等待 ⌛️。
Easier To Change 棒棒哒
大学时完全被第一版生动形象故事/理念吸引,当然更期待云风版的,难得!
期待早日完成。
风哥自己什么时候出本书,不枉毕生经纶,留一传世之作。
看过第一版,期待一下第二版 :)

Post a comment

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