Предпосылка
Я считаю, что есть способ объективно определить «Хорошие» и «Плохие» объектно-ориентированные методы проектирования и что, как сообщество, мы можем определить, что это такое. Это академическое упражнение. Если это будет сделано серьезно и решительно, я считаю, что это может принести большую пользу сообществу в целом. Сообщество выиграет, если у нас будет место, на которое мы все можем указать: «Этот метод« Хороший »или« Плохой », и мы должны или не должны использовать его, если нет особых обстоятельств».
План
Для этого мы должны сосредоточиться на объектно-ориентированных принципах (в отличие от функциональных языков, языков на основе множеств или других типов).
Я не планирую принимать один ответ, вместо этого я хотел бы, чтобы ответы внесли вклад в окончательный сборник или были бы рациональным обсуждением вопросов.
Я понимаю, что это может спорно, но я считаю, что мы можем что-то железо. Из большинства правил есть исключения, и я считаю, что именно здесь разногласия исчезнут. Мы должны сделать заявления, а затем принять к сведению соответствующие исключения и возражения со стороны несогласных.
Основание
Я хотел бы сделать ударение при определении «Хорошо» и «Плохо»:
«Хорошо» - эта техника сработает в первый раз и будет надежным решением. Это будет легко изменить позже и быстро окупит затраты времени на его внедрение. Это может быть последовательно применено и легко признано программистами обслуживания в будущем. В целом, это способствует хорошему функционированию и снижает затраты на техническое обслуживание в течение срока службы изделия.
«Плохо» - эта техника может работать в краткосрочной перспективе, но вскоре становится пассивом. Это сразу трудно изменить или становится более сложным со временем. Первоначальные инвестиции могут быть небольшими или большими, но они быстро становятся растущими, в конечном итоге превращаются в непогашенные, и их необходимо постоянно устранять или обходить. Оно субъективно применяется и противоречиво и может стать сюрпризом или его трудно будет распознать программистам по обслуживанию в будущем. В целом, это способствует в конечном итоге увеличению затрат на обслуживание и / или эксплуатацию продукта и препятствует или предотвращает изменения продукта. Запрещая или предотвращая изменения, они становятся не просто прямыми затратами, а альтернативными затратами и значительной ответственностью.
Стартер
В качестве примера того, как, на мой взгляд, будет выглядеть хороший вклад, я хотел бы предложить принцип «Хороший»:
Разделение интересов
[Краткое описание]
* +1034 * Пример
[Пример кода или другой тип]
Цель
[Объяснение каких проблем предотвращает этот принцип]
* * 1 042 Применимость * * тысяча сорок-три
[Почему, где и когда я использовал бы этот принцип?]
Исключения
[Когда бы я не использовал этот принцип или где он мог бы быть вредным?]
Возражения * * тысяча пятьдесят-одна
[Обратите внимание на любые особые мнения или возражения сообщества здесь]