Chapter 2. Coding Conventions

2.1. Bottom-Up Design and Evolution

Freecell Solver was designed bottom-up: first by writing functions to input cards and then to handle states and finally the algorithm itself. I find that bottom-up design (as evangelized by Paul Graham and others)- start by writing small utility functions and classes and then integrate into a grander scheme, has been a guiding principle when working on Freecell Solver.

Freecell Solver has many utility classes, and has also been coded incrementally. I also find bottom-up design more natural.