知识卡片
反面模式藏宝
内容
“藏宝”反面模式指在不该有副作用的地方悄悄埋进重要逻辑——读者会本能假设getX()这类方法不产生边际影响,而launchSpaceShuttle()这样的名字则明显暗示重大影响。职责驱动设计要求方法名如实反映它实际做的事,一旦给读者”只是取值”的印象,就不该偷偷塞进副作用,否则读者按表面语义推理会被误导,出问题也难定位。补救:轻则改名,重则重构,把副作用拆到名字如实反映其行为的方法里。
参考来源
- 位置:《恰如其分的软件架构》第10章《代码模型》10.7节《在代码中表达设计意图的模式》(源文件:_epub-src/OEBPS/text00102.html)
- 结论依据:原文提出"藏宝"反面模式,说明职责驱动设计要求不能在做一件事时暗示做另一件事,举例getX()方法读者会假定无副作用而launchSpaceShuttle()会有明显影响,补救方式是重命名或重构。
- 原始内容:在不适当的地方藏宝,容易把其他的好事弄糟……大多数开发人员在阅读源代码时都会假定,getX()方法不会产生边际影响,而名为launchSpaceShuttle()的方法则会产生明显的边际影响……有时候,简单地对方法进行重命名,就会让人感到清晰,而另一些时候,则需要对设计进行重构。