知识卡片

命令别询问

普通读书笔记卡 · 1879.a

内容

对象外部不应先询问状态再替它做决定,而应直接发出意图明确的命令。这样行为留在数据所属的边界内,能减少链式调用和对内部结构的依赖。

参考来源

- 位置:《程序员修炼之道:通向务实的最高境界(第2版)》第5章《宁弯不折》话题28「解耦」(源文件:_epub-src/text/part0014_split_001.html) - 结论依据:原文明确提出TDA(只管命令不要询问)原则:不应根据对象内部状态做决策再更新对象,而应把决策委托给对象自身,直接支持卡片论点。 - 原始内容:"这个原则说的是,不应该根据对象的内部状态做出决策,然后更新该对象。这样做完全破坏了封装的优势……提示45 只管命令不要询问……首先要做的就是,把计算折扣的工作委托给total对象。"