This change series puts together the pieces in the old system that need to be together in the new system. Procedural utility classes tie together unrelated functionality and makes it hard to build a new system.

Habit: Whole Values 1 — Fix Primitive Obsession

Organization ROI: Reduce bugs that arise from miscommunciation. Create classes to unwind many common design problems.

Engineer ROI: Create missing classes by following existing code.

Habit: Whole Values 2 — Collect Behaviors

Organization ROI: Decrease duplicate code and God Classes, reducing testing, implementation, and bug costs.

Engineer ROI: Move code onto whole value classes from procedures that use God Classes.

Habit: Whole Values 4 — Use in Procedural Code

Organization ROI: Leverage prior technical investments to improve broad swaths of your code base.

Engineer ROI: Change the code base to use the objects you extracted from the utility class.

Habit: Split God Classes 3 — Break Inbound Dependencies

Organization ROI: Prevent bugs due to data sharing between remote parts of the code. Update remote parts of the code separately.

Engineer ROI: Split one set of code that works with the God Class to use something simpler.

Habit: Explicit Data

Organization ROI: Reduce bugs due to data sharing.

Engineer ROI: Make it easier to reason over the data used by each section of code.