使用具有按合同设计或“代码合同”(前置条件、检查断言、后置条件、类不变量等)的语言来获得尽可能接近您的类和类特性(方法和属性)的“测试”可能的。然后使用 TDD 用它的合约来测试你的代码。
尽可能多地使用自建代码生成。生成的代码是经过验证的、可预测的、更容易调试的,并且比全手工编码的代码更容易/更快地修复。为什么要写你能生成的东西?但是,不要使用 OPG(other-peoples-generators)!您生成的代码是您控制和了解的代码。
您可以期望在您的项目过程中花费一个反向比率 - 也就是说 - 您将在项目的开始 (1:1) 中编写大量的手动代码和合同。当您看到模式时,请教您编写的代码生成器为您生成代码并重用它。生成的越多,设计、编写、调试和测试的就越少。到项目结束时,您会发现您的方程式已经倒转:您编写的核心代码减少了,您的重点转移到了“叶子代码”(最后一英里)或专业化(与通用和生成) 代码。
最后——得到一个代码分析器。一个好的、自动化的代码分析规则系统和引擎将为您节省大量时间来查找“愚蠢的错误”,因为人们在使用特定语言编写代码时存在众所周知的陷阱。在 Eiffel,我们现在有了 Eiffel Inspector,我们不仅使用它附带的 90 多条规则,而且正在学习为我们自己发现的“陷阱”编写我们自己的规则。这样的分析器不仅可以为您节省错误,还可以增强您的设计——即使是 GREEN 程序员也能很快“理解”并尽早停止犯新手错误并更快地学习!
重写现有系统的经验法则是这样的:“如果用 10 年的时间来编写,那么将需要 10 年的时间来重新编写。” 在我们的案例中,使用 Eiffel、按合同设计、代码分析和代码生成,我们在 4 年内重写了一个 14 年的系统,并将在 4 1/2 内完全交付。新系统比旧系统复杂大约 4 到 5 倍,所以这说明了很多!