跳转至

设计模式

参考:Python Design Patterns

DRY原则

DRY(Don't repeat yourself):

1
在一个系统中,每一处知识都必须单一、明确、权威地表达。

DRY,不仅仅限定于“不要复制粘贴源码。它针对的是你对**知识**和**意图**的复制,它强调的是,在两个地方表达的东西其实是相同的,只是表达方式有可能完全不同。

当代码的某个单一方面必须改变时,你是否发现自己在多个地方以多种不同的格式进行了变更?有没有同时修改源代码和文档,或是同时变更数据库Schema和代码中相关的数据结构,亦或...?如果是,则你的代码不满足DRY。

ETC 原则

ETC(Easy to Change)

  • 为什么解耦很好?因为通过隔离关注焦点,可让每一部分都容易变更——此谓ETC。
  • 为什么单一职责原则很有用?因为一个需求变化仅体现为某个单一模块的一个对应变化——此谓ETC。
  • 为什么命名很重要?因为好的命名可以使得代码更容易阅读,而你需要通过阅读代码来进行变更——此谓ETC。

ETC是一种价值观念,而不是一条确定的规则

价值观念是帮助你做决定的:应该做这个,还是做那个?当你在软件领域思考时,你应该让它漂浮在意识思维之下,指引你正确的方向。那么如何做到?

1
2
有意识地强化自己,时常地有意识地问自己:“刚才做的事情是让整个系统容易改变还是更难改变?”
当你保存文件的时候问一遍,写测试的时候问一遍,写文档的时候问一遍,修复Bug的时候也问一遍。

当你无法确定这样做是使得系统容易改变还是更难时怎么做

  1. 试着让你写的东西可以替换。这样无论发生什么,这块代码都不会成为你的障碍。想着一直保持代码的解耦和内聚,当然这也是你一直应该这样做。
  2. 把它当作培养直觉的一种方式。在工程日志中记录你面临的处境:你有哪些选择以及关于改变的猜测。在源码中留一个标签,以便以后修改代码时进行回顾并给自己留下反馈记录。

待更新