ЗАДНИЙ ПЛАН:
Анализаторы кода, такие как CheckStyle, содержат специальное правило "дизайн для расширения". Он обеспечивает действительно особый подход к дизайну класса. Как форма меня это действительно спорная вещь. Здесь была хорошая иллюстрация этого подхода к дизайну. Ключ - вы защищаете суперкласс от модификации, оставляя только маленькие "дыры". или вы делаете свои классы окончательными. Определенно хорошо для некоторых случаев безопасного создания библиотеки.
С другой стороны, у нас есть стиль Java "bean" POJO, в котором вы скрываете все ваши члены данных и предоставляете только публичные (или защищенные) аксессоры (getters) и мутаторы (сеттеры). Имея настоящие бобы жизни, это делает их практически невозможными, по моему мнению. Насколько я понимаю, единственный способ заключается в объединении компонента и повторной реализации всех необходимых аксессуаров/мутаторов. Но это серьезно снижает производительность ilke.
Я вижу, что SONAR снизил правило "дизайн для расширения" из профилей по умолчанию в 2011 году. Пожалуйста, обратите внимание, что один человек вернулся в этом году, чтобы перепроверить его ;-).
ВОПРОС:
Поэтому я планирую отказаться от правила "дизайн для расширения" из моего профиля качества Sonar, в первую очередь потому, что он делает повторное использование POJO намного сложнее, но у меня есть некоторые сомнения в том, что я пропустил какой-то подход, который позволяет использовать наследование классов с помощью аксессуаров/мутаторов, сохраняющих хорошую безопасность против потомков. Есть ли какой-либо стандартный подход, который мог бы изменить мой разум? Можно ли разрешить этот конфликт с принятым подходом "дизайн для расширения"?
Извините, не было 10 лет на Java, поэтому я действительно мог пропустить что-то огромное. ;-)
Я был бы прагматичным и спрашивал, кто из потребителей вашего кода. Если это какая-то основа для широкой аудитории (публичной?), Вы можете внимательно рассмотреть свои точки расширения. Отчасти, чтобы выразить ваше намерение, частично, чтобы защитить части, которые не должны меняться. Однако, если это предназначено для внутреннего использования с меньшей аудиторией, вы можете согласиться быть более расслабленным.