| 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.
Diseño de bibliotecas y paquetes de Go para una evolución a largo plazo. Cubre la gestión de la superficie de API, la dirección de dependencia, la compatibilidad con versiones anteriores, las compensaciones entre objetos de parámetros y opciones funcionales, y la capacidad de prueba mediante simulación determinista. Fuente: stuckinforloop/harness.