Подтвердить что ты не робот

Когда шаблон дизайна может ухудшить ваше программное обеспечение?

Когда шаблон проектирования сделает ваше программное обеспечение хуже?

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

4b9b3361

Ответ 1

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

  • Бросок большого количества блоков try/catch/finally может заставить программиста почувствовать, что у них есть схема обработки ошибок, когда на самом деле они этого не делают.
  • Замена sql на хранимые процедуры может заставить программистов почувствовать, что у них есть уровень доступа к данным, который волшебным образом дает им эффективность, возможность повторного использования, инкапсуляцию, когда на самом деле они этого не делают.
  • Использование классов заставляет многих программистов полагать, что они занимаются объектно-ориентированным программированием, когда на самом деле они не являются (или только царапают поверхность OO).

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

Решение? Трудно сказать. Вы не можете ошибаться, передавая младшему разработчику Code Complete или некоторые из них, чтобы помочь им понять, что это касается применения принципов к конкретным ситуации, и что отличные разработчики поддерживают это просто.

Ответ 2

Когда вы злоупотребляете им, а иногда и хуже, когда вы используете шаблон неактуально. Последнее приводит меня в бешенство, потому что, когда я анализирую фрагмент кода, я, естественно, сначала предполагаю, что там есть причина для всего, и когда я не вижу причины для чего-то, самым безопасным предположением по умолчанию является то, что я что-то упускаю. И так как я не хочу рисковать разбивать код неизвестными или непредсказуемыми способами, я трачу время на то, чтобы выяснить, почему он там, прежде чем я начну с ним.

Ответ 3

Когда это имя singleton

Ответ 4

Очевидно, что при неправильном использовании шаблона это только ухудшает ваш дизайн.

Ответ 5

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

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

Чтобы лучше понять шаблоны, вам также нужно узнать о Концепция анти-шаблона и прочитать много больше, чем книга GOF. Одно из предложений состоит в том, чтобы читать Pattern hatching в дополнение к концепциям GOF.

Ответ 6

Шаблон проектирования - это просто способ присвоения имен и документирования общей структуры кода. Таким образом, вы не должны делать вывод, что все шаблоны являются хорошими. Люди, которые хорошо документируют шаблоны проектирования (например, GoF), всегда включают раздел описания шаблона, описывающий, когда вам следует и не следует использовать шаблон. Как таковая половина большинства книг по шаблонам дизайна - это ответить на вопрос "Когда шаблон дизайна сделает ваше программное обеспечение хуже?"

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

В заключение ответ на этот вопрос должен быть действительно: - Идите и прочитайте образец дизайна, и он скажет вам.

Ответ 7

Что облегчает задачу (EJB)

Ответ 8

Если это неправильный шаблон для вашей проблемы.

Ответ 9

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

Ответ 10

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

Они не должны были быть блоками, в которых проблема обрамлена. Они не должны отображаться в соглашениях об именах объектов. Объекты не следует называть * Factory или * Singleton или любое другое имя шаблона. Они не должны быть привязаны к определенной схеме.

Они просто очень хорошие "отправные точки", чтобы помочь быстро построить сложный код. Вы можете (и должны) смешивать и сопоставлять идеи по мере необходимости. Документация? Для чего нужны комментарии, а не для пространства имен объектов...

Павел.

Ответ 11

Интересно, что за последний год я потратил немало времени на изучение шаблонов проектирования и их реализаций - так же, как кажется, что все больше удары по шаблонам дизайна. Шаблоны проектирования, честно или нет, присоединились к рядам процессов и методологий, которые должны были сделать программное обеспечение поддающимся количественной оценке навыкам, т.е. Ошибочность того, что их использование заставит вас писать лучший код. Я думаю, что проблема с Design Patterns заключается в том, что менее опытные программисты используют их как "Золотой молот". Они изучают шаблон стратегии - это ценная вещь, но затем они используют ее повсюду, чрезмерно усложняя их код и добавляя ненужные функции и "расширяемость".

Я считаю, что в рефакторинге для шаблонов есть огромная ценность, потому что вы очищаете существующий код. Шаблоны также являются ценными инструментами коммуникации, которые позволяют описывать ваш код в терминах более высокого уровня. Но наложение шаблонов дизайна в ваше программное обеспечение, потому что они Cool и Marketable (a.k.a "Возобновление разработки" ) - плохая идея.

Ответ 12

Он называется анти-шаблоном, и, пожалуйста, обратитесь к файлам AntiPatterns: Рефакторинг программного обеспечения, архитектур и проектов в книге кризисов.

Ответ 13

Здесь вы можете прочитать об антипаттернах здесь.

Ответ 14

Я думаю, что шаблон стратегии может сделать программное обеспечение хуже, если оно не понадобится. Шаблон стратегии в основном делает часть функциональности "подключаемой", то есть мы можем переключать различные реализации "на лету". Но эта подключаемая функциональность часто добавляет большую сложность (а иногда и дополнительные накладные расходы) с конфигурацией, и если она не нужна, это отходы. Я вижу, что этот шаблон злоупотребляет довольно часто.

Ответ 15

Леви, Я бы использовал только конкретный шаблон, если бы он облегчил мою жизнь (и те, которые отвечают за поддержание кода). Я считаю, что правильный выбор шаблона дизайна так же важен, как и комментарии - возможно, комментарии важнее? Вы обнаружите, что шаблоны проектирования, по большей части, формально описывают методы, которые мы, как разработчики, использовали в течение многих лет.

TheEruditeTroglodyte

Ответ 16

Любой шаблон, который неправильно понимается или неправильно применяется, будет иметь тенденцию ухудшать код хуже. Кроме того, любой шаблон, который применяется только ради шаблона, например. "Мы сейчас SOA!". Обычно, если шаблон вводит " code-odell, то его использование должно быть подозрительным.

Ответ 17

Я бы сказал, каждый раз, когда вы выбираете шаблон, основанный на решении одной проблемы, а не на всех проблемах, которые ваше программное обеспечение намерено решить.

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

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

Ответ 18

Я могу много думать о том, как дизайнерский проект может пойти не так. Книга GoF объясняет проблему, решение и недостатки для всех шаблонов, о которых она говорит. - Шаблон - это решение проблемы. Если эта проблема не ваша проблема, то она, вероятно, станет антипаттерном. - У шаблона есть недостатки, и вы должны знать о них. - Когда тебе это не нужно. Шаблон может означать много классов, и вы пытаетесь решить проблему, которая может возникнуть в будущем, но пока этого не сделать. - Если вы не понимаете, как это работает, и вы внедряете его неправильно, оно также становится антипаттерном. У вас будет много бесполезных классов и кода. - Когда ты начинаешь зависеть от этого. Иерархии, которые являются слишком глубокими, плохое использование полиморфизма или синглетонов и т.д., Могут представлять проблему.

Возможно, есть и другие причины...

Ответ 19

Когда люди анализируют код и проводят больше времени, пытаясь понять шаблон, чем бизнес-логику. Шаблоны хороши, но только если все участвующие знают, как их читать.