Выход из зоны боли - NDepend - PullRequest
2 голосов
/ 13 июля 2009

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

Что на самом деле означает зона боли? Разве это не значит, что есть много связей, и вещи не могут измениться очень легко.

Недавно я удалил много интерфейсов и запечатал множество классов, так как не хочу, чтобы пользователь расширял API (только в некоторых местах). Это .NET Wrapper для com-объекта, поэтому пользователю не нужно ничего расширять.

Какие есть хорошие способы вывести меня из зоны боли?

Спасибо

Ответы [ 2 ]

11 голосов
/ 14 июля 2009

Идея Zone of Pain заключается в обнаружении компонентов, которые оба: -Бетонны (т.е. их пользователи связаны с классами вместо интерфейсов) -Популярны (т. Е. Используются многими другими компонентами).

Популярное относится к понятию стабильности. Компонент стабилен, если при изменении он ломает множество других компонентов, которые его используют. Одним словом: Популярный = Стабильный

Другая идея заключается в том, что интерфейсы менее подвержены изменениям, чем классы. Вот почему общепринято, что предпочтительнее использовать интерфейс вместо класса, у вас меньше шансов быть «статически сломанным» + у вас меньше шансов быть «семантически» сломанным, поскольку ваш код не должен быть связаны с любыми деталями реализации (которые могут быть изменены).

Как следствие, будучи конкретным + стабильным, компонент подвергается некоторой потенциальной боли при разработке: он сильно подвержен изменениям + каждое изменение потенциально может привести к поломке большого количества кода.

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

3 голосов
/ 13 июля 2009

Я думаю, что Скотт Хансельман написал довольно длинный пост о NDepend и его последствиях для зоны

http://www.hanselman.com/blog/ExitingTheZoneOfPainStaticAnalysisWithNDepend.aspx

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

Вероятно, возникает вопрос: «Насколько вероятно, что мы собираемся поменять этот слой на другой каркас / библиотеку?»

...