Глоссарий
Cohesion
Мера того, насколько элементы внутри модуля принадлежат друг другу. Чем выше, тем понятнее назначение модуля.
Cohesion — вместе с coupling основная метрика проектирования.
Уровни (Yourdon & Constantine), от худшего к лучшему:
- Coincidental — элементы вместе случайно (
Utils.py). - Logical — «похожи» по типу действия (
StringHelper). - Temporal — вызываются в одно время (
Startup.init_all). - Procedural — шаги одной процедуры.
- Communicational — работают с одними данными.
- Sequential — выход одной = вход следующей.
- Functional — служат одной задаче.
Практические маркеры низкой cohesion:
- Имя с «and»:
UserAndEmailManager. - Суффиксы -er без чёткой ответственности:
Manager,Helper,Processor. - Класс > 500 строк.
- Разные группы полей используются разными группами методов.
Высокая cohesion — единственный способ сделать SRP работоспособным принципом.