Хорошее определение «согласованности» [закрыто]

StackOverflow https://stackoverflow.com/questions/581058

  •  06-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

Я думаю, что правильный термин сплоченность.

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

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

Другие советы

Рядом с моим компьютером у меня лежала книга «Code Complete» Стива МакКоннелла (т. е. библия программистов) с открытой страницей, объясняющей сплоченность, поэтому я решил поделиться:

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

Я использую термин «разделение задач», чтобы объяснить это во время рефакторинга.Часто, когда код достаточно новый, все сбивается в кучу, поскольку отдельные проблемы поначалу не ясны.

Один из простых способов проиллюстрировать это вашим коллегам — попросить их написать тестовые примеры для кода.Это должно продемонстрировать, что код не является ясным и последовательным.

Еще одна хорошая фраза: функции/объекты «должны делать одно, и делать это хорошо». Это имеет значение для всего: от названий объектов/методов до общей архитектуры системы.

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

Как говорит CodeWiki, сплоченность обычно обсуждается со связью, когда они могут действовать противоположно друг другу, особенно там, где строгие интерфейсы не планируются тщательно.Многие из найденных в Google статей о связности относятся к объектно-ориентированному проектированию, но связность и связанность не ограничиваются объектно-ориентированным подходом.

Отличается упорядоченным, логичным и эстетически последовательным соотношением частей;"последовательный аргумент" - от http://www.websters-online-dictionary.org/definition/coherent

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top