Сознание


Connascence ( / k ə ˈ n s ən s / ) — это метрика качества программного обеспечения , изобретенная Мейлиром Пейдж-Джонсом, чтобы позволить рассуждать о сложности, вызванной отношениями зависимости в объектно-ориентированном проектировании, во многом подобно тому, как связывание делало это для структурированного проектирования . В программной инженерии два компонентаявляются совпадающими, если изменение одного потребовало бы изменения другого, чтобы сохранить общую правильность системы. В дополнение к категоризации отношений зависимости, connascence также предоставляет систему для сравнения различных типов зависимости. Такие сравнения между потенциальными проектами часто могут указывать на способы улучшения качества программного обеспечения.

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

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

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

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

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