Когда улучшение согласованности программ ухудшает сцепление? - PullRequest
0 голосов
/ 27 февраля 2019

Недавно я сдал экзамен по принципам и шаблонам проектирования, и один из вопросов на экзамене был следующим: «Иногда улучшение сплоченности программы может ухудшить сцепление, приведите пример».

Из того, что я понимаюСплоченность - это то, насколько класс / модуль сосредоточен на исправлении проблемы, которую он создал, чтобы исправить, или, что еще лучше, насколько хорошо он выполняет свою работу.Делает ли он работу, которую не должен делать?Затем переместите эту часть в другой класс / модуль.

Связь - это уровень зависимости между многими классами / модулями.Это означает, что хороший класс / модуль будет работать независимо от того, вносим ли мы серьезные изменения в другой модуль / класс.

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

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

Я что-то упустил?Мое понимание сплоченности / сцепления неверно?Извините за долгое чтение!

1 Ответ

0 голосов
/ 27 февраля 2019

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

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

Из этого примера вы можете видеть, что очень сплоченная команда должна знать работу друг друга, что затрудняет изменение любой отдельной работы.Это соответствует проблеме ремонтопригодности, создаваемой тесно связанными модулями в программном обеспечении.Это удобно и позволяет модулям работать более тесно вместе, но создает проблему, если что-то изменится.

...