| design-process | Four design axes, work backwards, minimize surface area | | surface-area | Internal packages, no global state, unknown outputs, mutation guards | | dependencies | Accept don't instantiate, accept interfaces, return structs | | evolution | Breaking changes, param objects vs functional options, result objects |
| testability | TimeNow function type, rand.Rand injection, WithX options, deterministic outputs, DST readiness |
Do NOT apply to application-level code that won't be imported by other modules.
Entwerfen von Go-Bibliotheken und -Paketen für eine langfristige Weiterentwicklung. Behandelt API-Oberflächenmanagement, Abhängigkeitsrichtung, Abwärtskompatibilität, Kompromisse zwischen Parameterobjekten und Funktionsoptionen sowie Testbarkeit durch deterministische Simulation. Quelle: stuckinforloop/harness.