О сопряжённости и связанности в книге "От монолита к микросервисам" С. Ньюмен

Рейтинг: 2Ответов: 0Опубликовано: 17.08.2023

Читаю книгу Сэма Ньюмена "От монолита к микросервисам" и дошёл до следующих строк(стр 36):

Сопряженность (coupling) говорит о том, как изменение в одной вещи требует изменения в другой; связность (cohesion) говорит о том, как мы группируем родственный код. ’’Структура является стабильной, если связность высокая, а сопряженность низкая”. -Ларри Константин (Larry Constantine)

Это наблюдение кажется разумным и полезным. Если у нас есть два фрагмента родственного кода, то связность является низкой, поскольку родственная функциональность распространяется на каждый из них. У нас также есть тесная сопряженность, поскольку когда этот родственный код изменяется, то должны измениться обе вещи.

Никак не могу понять, почему у двух фрагментов родственного кода связность низкая? Разве родственный код в данном случае, не код который является близким по бизнес-логике/требованиям? Например saveUser/getuser.

Аналогично не могу понять обьяснение следующих строчек

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

В цитате выше, запятая, возможно, должна стоять после слова вместе , а не после изменению

Но ведь даже в монолите мы содержим код, связанный с бизнес-сущностями в отдельных сервисах, т.е код, связанный с изменением юзера лежит в userService, с изменением бланков в blankService, имею ввиду, что мы не просто склеиваем всевозможный код, но и группируем его по правилам, что как раз таки и отделяет части, тяготеющие к одновеменному изменению от других частей, разве не так? Буду рад каждому мнению.

Ответы

Ответов пока нет.