题记:
去掉重复的信息会让你的代码的结构发生本质的变化。
—— vczh
正文:
因为要对项目做重构, 所以, 读了 vczh 的这篇 <<靠谱的代码和DRY >> 和 <<The Pragmatic Programmer>> 的 Item7, 8. 下面是部分摘录:
不能repeat的其实是信息,不是代码。然而, 分析什么是信息又不是一件简单的事情.所以, 只能不断地修改. 目的: 保证代码质量不断提高.
换句话说, 不断地重构.而重构, 又需要做TDD. 目的: 保证代码质量.
特别的, 对GUI做TDD, 又需要MVC. 目的: 方便代码的测试. => 首先, 实现代码的MVC.
另一方面:
在现实生活中, 居多的 applications are database driven。在UT时, 作为 Database 也就意味着需要有一个 Real Database Class。
这个时候, 你要构造出整个 Database Class 才能进行 UT。这是一个很High的Burden。通常情况下,coder会把这些东西扔给QA做Functional Test。
而当 it comes to programming,design by contract, 必然得到各种interface,那么UT就可以方便地进行。
interface:表达的是,“能做什么”,其实, 是一种function。function当然容易测试。 目的:方便测试。
另一方面, 做TDD时, vczh 的风格是, 先UT, 最后加GUI. 目的: 追随master.
正交的代码易于测试: (1) 没有重复/平行的代码, 不需要重复测试.
重构时,
(1)如何划归成MVC?
(2)如何实现 interface oriented programming?
### Update
1. 信息, 具有 结构, 组成 这样的meta data.
比如: Tony;Male;Engineer 这样的信息, 结构: (field N;)*, 组成, 如分隔符(;).
还有,类型信息(CommonDef)。