Идея Zone of Pain заключается в обнаружении компонентов, которые оба:
-Бетонны (т.е. их пользователи связаны с классами вместо интерфейсов)
-Популярны (т. Е. Используются многими другими компонентами).
Популярное относится к понятию стабильности. Компонент стабилен, если при изменении он ломает множество других компонентов, которые его используют. Одним словом: Популярный = Стабильный
Другая идея заключается в том, что интерфейсы менее подвержены изменениям, чем классы. Вот почему общепринято, что предпочтительнее использовать интерфейс вместо класса, у вас меньше шансов быть «статически сломанным» + у вас меньше шансов быть «семантически» сломанным, поскольку ваш код не должен быть связаны с любыми деталями реализации (которые могут быть изменены).
Как следствие, будучи конкретным + стабильным, компонент подвергается некоторой потенциальной боли при разработке: он сильно подвержен изменениям + каждое изменение потенциально может привести к поломке большого количества кода.
В вашем случае и в некоторых других случаях пребывание в зоне боли не обязательно является плохой вещью. Важно, чтобы оба осознавали этот факт +, если ваш компонент действительно вызывает боль, а затем откат вашего кода к интерфейсам.