软件构造 | Designing Specification
1 Functions & methods in programming languages
“方法”是程序的“积木”,可以被独立开发、测试、复用使用“方法”的客户端,无需了解方法内部具体如何工作—“抽象”。
A complete method
2 Specification: Programming for communication
Documenting in programming
Specification and Contract (of a method)
-
Specifications are the linchpin
关键of teamwork
:没规约,没法分派任务,无法写程序;即使写出来,也不 知道对错。 -
The specification acts as a contract
契约: 程序与客户端之间达成的一致。 -
Spec
给“供需双 方”都确定了责任,在调用的时候双方都要遵守
Why specifications?
Reality:很多bug来自于 双方之间的误解,不写下来,那么不同开发者的理解 就可能不同,没有规约 ,难以定位错误
Advantages:精确的规约,有助于区分责任,客户端无需阅读被调用函数的代码,只需理解spec即可.
An example of specification A method add() of a Java class BigInteger
Specifications in Java
Specification (contract)
3 Designing specifications
Stronger vs. weaker specs
更强的规约,表达为更小的区域