Что такое Абстрактность по сравнению с Графиком Нестабильности?

C#

большинство моих схватываний имеет отношение к предположению, что конвенции C++ были автоматически лучшим выбором для C#

  • Никакие помехи, позволенные в интерфейсах Класса. Это - все еще часть класса. Почему это не может быть часть интерфейса?! Я должен был создать такие глупые обходные решения взлома-y для этого.
  • Чувствительность к регистру. я знаю, что это разрушило бы приложения прежней версии в этой точке, но почему нечувствительность к регистру не была не правилом с начала

Премия один для .NET (не конкретный C#)

  • Компилятор, не достаточно умный. В.NET 3.x, компилятор может выяснить "var" во время компиляции итак, почему не другая общая оптимизация? Все мы знаем строку по сравнению с StringBuilder / неизменный по сравнению с изменяемой вещью. Почему компилятор не преобразовывает его для Вас, когда во многих случаях очевидно, что StringBuilder лучше, чем несколько concat.s? я уверен, что существуют тонны другой оптимизации, которую компилятор мог сделать для нас по умолчанию (с опцией взять верх) и сэкономить нам массу времени.
22
задан Wolf 6 October 2014 в 10:51
поделиться

1 ответ

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

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

Статья Роберта К. Мартина по объектно-ориентированным метрикам описывает эти концепции в более количественных терминах.

Выдержка из статьи:

Ответственность, независимость и стабильность категории можно измерить, посчитав зависимости, которые взаимодействуют с этой категорией. Были идентифицированы три показателя:

Ca: Афферентные связи: количество классов за пределами этой категории, которые зависят от классов в этой категории.

Ce: Эфферентные связи: количество классов внутри этой категории, которые зависят от классов вне этой категории. категории.

I: Нестабильность: (Ce ÷ (Ca + Ce)): эта метрика имеет диапазон [0,1]. I = 0 указывает на максимально стабильную категорию. I = 1 указывает на максимально нестабильную категорию

A: Абстрактность: (# абстрактных классов в категории ÷ общее количество классов в категории). Этот диапазон показателей составляет [0,1]. 0 означает конкретный, а 1 означает полностью абстрактный.

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

28
ответ дан 29 November 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: