Сцепление / Сцепление - PullRequest
       13

Сцепление / Сцепление

1 голос
/ 05 января 2011

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

Ответы [ 4 ]

3 голосов
/ 05 января 2011

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

В вашем коде есть только одна действительно важная вещь, которую я бы изменил.Я хотел бы рассмотреть вопрос о том, что называется шаблоном команд.Информацию об этом не должно быть трудно найти ни в Интернете, ни в книге GoF.

Основная идея заключается в том, что каждая из ваших команд «добавить ребенка», «добавить родителя» станет отдельным классом.Логика для одной команды заключена в один небольшой класс, который легко тестировать и изменять.Затем этот класс должен быть «выполнен» для выполнения работы вашего основного класса.Таким образом, ваш основной класс имеет дело только с анализом командной строки и может потерять большую часть своих знаний о FamilyTree.Он просто должен знать, какая командная строка отображает какие классы команд и запускает их.

Это мои 2 цента.

1 голос
/ 23 апреля 2015

Короче говоря:

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

Один из способов взглянуть на сплоченность с точки зрения ОО - это если методы в классе используютЛюбой из частных атрибутов.

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

Связь простыми словами - это то, сколько один компонент (опять-таки, представьте себе класс, хотя и не обязательно) знает о внутренних принципах работы или внутренних элементах другого, т.е.имеет другого компонента.

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

В длинне:

Я написал пост в блоге об этомs. В нем обсуждается все это более подробно, с примерами и т. д. Также объясняются преимущества того, почему вы должны следовать этим принципам.Я думаю, что это может помочь ...

1 голос
/ 05 января 2011

Я могу порекомендовать книгу Алана и Джеймса Шаблоны проектирования, объясненные - Новый взгляд на объектно-ориентированный дизайн (ISBN-13: 978-0321247148):

Cover: Design Patterns explained -- A new perspective on object-oriented design

Это отличная книга о имеет-101 * * и -не решения, включая сплоченность и связь в объектно-ориентированном дизайне.

0 голосов
/ 03 января 2016

Соединение определяет степень, в которой каждый компонент зависит от других компонентов в системе.Учитывая два компонента A и B, сколько кода в B должно измениться, если A изменится.Сплоченность определяет меру того, насколько согласованно или сильно связаны различные функции одного программного компонента. Это относится к тому, что делает класс.Низкая сплоченность будет означать, что класс выполняет большое количество действий и не сосредоточен на том, что он должен делать.Высокая сплоченность тогда означала бы, что класс сосредоточен на том, что он должен делать, то есть только на методах, относящихся к намерению класса.Примечание. Хорошие API-интерфейсы демонстрируют слабую связь и высокую когезию.Одна особенно отвратительная форма тесной связи, которую всегда следует избегать, - это наличие двух компонентов, которые зависят друг от друга прямо или косвенно, то есть цикл зависимости или циклическая зависимость.Подробная информация по ссылке ниже http://softwarematerial.blogspot.sg/2015/12/coupling-and-cohesion.html

...