Specifications and Abstract Data Types: The Contracts Beneath the Code
Every method you have ever written has a specification. Most of the time it lives only in your head, or half-written in a comment, or implied by the test that happens to exist. Th…