Balancing Coupling
If you want to build modular, evolvable, and resilient software systems, you have to get coupling right. Every design decision you make influences coupling, which in turn shapes the design options available to you. Despite its importance, coupling often doesn't receive the attention it deserves – until now.
https://www.amazon.com/Balancing-Coupling-Software-Design-Addison-Wesley-ebook/dp/B09RV3Z3TP
Balancing Coupling

Закончил читать новую книгу Влада Хононова.

В книге дается определение каплинга, всякие его категоризации и способы оценки. На мой взгляд, отличное обращение к исследованию Чарльза Перов по поводу причин катастроф на атомных станциях, дтп и т.п. Надо как-нибудь почитать отдельно.

Хотя название и говорит о том, что основная тема книги это баланс, но пониманию природы каплинга все же уделена большая часть. А весь баланс сводится к простой формуле:

BALANCE = (COUPLING STRENGTH XOR DISTANCE) OR NOT VOLATILITY

Т. е. каплинг имеет какой-то эффект, только если необходимо его поддерживать. При этом сильный каплинг нивелируется большим расстоянием между компонентами, а расстояние наоборот низким каплингом.

Вообще, то, что в скобочках, это показатель модульности:

MODULARITY = COUPLING STRENGTH XOR DISTANCE

Понятие модуля и его отличие от компонента в книге тоже приведено. Так же автор говорит и про кохижен.

А если формулы выше сложно запомнить, то можно упростить:

MAINTENANCE EFFORT = COUPLING STRENGTH * DISTANCE * VOLATILITY

Правда такая формула не учитывает сценарий, когда у нас модуль может состоять из компонентом с низким каплингом. Но, если держать в голове, что определение границ модуля и степени его абстракции это отдельная проблема, и ее тоже нужно решать, то формула вполне применима в ежедневной работе.

В целом хорошая книга. Писалась 5 лет, а ее выход поддержал Вернон. Если надоело миллионный раз читать про чистую архитектуру и SOLID, то советую купить и полистать.