第 17 章 连锁
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
Tidy 就像薯片。你吃了一片,就会想再吃一片。控制继续整理的冲动是一项关键的 Tidy 技能。你刚刚整理过,还需要再整理吗?这要看情况而定(我们将在第三部分讨论情况而定)。
至于步子迈多大,,但我鼓励大家尝试坚持微小的整理步骤。优化每一步。从外表上看,你好像在跑步,但就像蜈蚣一样,你会知道自己迈出了许多小步。
Tidy 整理变成了一盘棋,前面的棋步清晰可见。让我们看看 Tidy 是如何为进一步的整理做铺垫的:
- 警卫条款
-
一旦设置了保护子句,条件可能会受益于转化为解释辅助子句或提取为解释变量。
- 死亡代码
-
去除杂乱无章的死代码后,您也许就能知道如何将代码按阅读顺序或内聚顺序排列。
- 对称性归一化
-
一旦你把相同的代码变得相同,不同的代码变得不同,你也许就能精确地把并行代码按阅读顺序分组。我曾经在一个包含多个网络入口的文件中这样做过。一旦它们看起来都一样,就可以很自然地将它们放在文件顶部,作为其他代码的目录。
- 新接口,旧实现
-
一旦您拥有了闪亮的新界面,您就会想使用它。如果您没有自动重写工具来转换所有调用者,您就需要一次转换一个。这是我们第一次看到扇出(fanout)--当一个 Tidy 导致一堆更多的 Tidy 时,每一个 Tidy 又会导致一堆更多的 Tidy(当我们讨论耦合和幂律时,我们会更多地讨论这个问题)。
- 阅读顺序
-
在确定阅读顺序后,您可能会看到将对称性规范化的机会。以前,元素之间相距甚远,看不到相似之处。
- 凝聚顺序
-
为了内聚序而组合在一起的元素是可以提取为子元素的。例如,创建一个辅助对象就不属于 Tidy 的范围。不过,当你对 Tidy 的使用越来越得心应手时,自然会看到更大规模的设计变更,这将有助于进一步的行为改变。
- 解释变量
-
右侧的赋值是一个解释变量,是一个解释辅助工具的候选对象(之后您可能可以内联该变量)。通过变量名提供的解释,可以删除多余的注释。
- 解释常量
-
提取一个解释常量 就会产生内聚力顺序。将同步变化的常量进行分组,便于未来的变化。
关于在哪里放置常数以及如何排列常数,有一整套理论。在此我就不一一赘述了--选择一些能让你的工作变得简单的东西吧。嗯,更容易。
- 显式参数
-
在使参数显式化之后,,你或许可以将一组参数归入一个对象,并将代码移入该对象。这超出了 Tidy 的范围,但在整理过程中,你会发现新的抽象。你会从运行代码中发现一些最强大的抽象概念。你永远不会在猜测中创建它们。
- 大块语句
-
您可以在每个语块前加上解释性注释。您可以提取一个片段作为解释性帮助。
- 提取助手
-
提取辅助子 后,可以引入保护子句,提取解释常量和变量,或删除多余注释。
- 一堆
-
在弄出一大堆显而易见的乱七八糟的东西之后,希望通过分块语句、添加解释性注释和提取帮助程序来进行整理。
- 解释评论意见
-
如果可能,通过引入解释变量、解释常量或解释助手,将注释中的信息移入代码中。
- 删除多余评论
-
消除冗余注释的噪音,可以帮助您看到更好的阅读顺序,或看到明确参数的机会。
我想再次强调,因为我被指责为反评论,所以你们只应删除绝对、完全多余的评论。同时,你也应该着眼于让评论变得绝对、完全多余。作为软件设计师,你的工作就是为你自己和你的团队现在和将来的成功做好准备。
由于变更是软件开发的主要成本,而理解代码是变更的主要成本,因此交流工作代码的结构和意图是你可以锻炼的最有价值的技能之一。注释是沟通的一种形式,但 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access