Top.Mail.Ru

Антипаттерны программирования. Какая польза?

Антипаттерн — это альтернатива паттерну. Паттерн — это эффективный подход к
решению задачи по программированию, предполагающий применение уже готового
шаблона данного решения. Из этого получается, что антипаттерн — это решение
задач по программированию по неэффективному шаблону или методу, который в
результате решает поставленную заданную задачу, но делает это неправильно и
«криво».
Избегать антипаттерны — это хорошая практика для программиста. Так как их
использование решает одну проблему, но обычно создает дополнительные
трудности, которые по значимости не меньше решенной проблемы.
В то же время, использование паттернов также, иногда, приводит к дополнительным
проблемам. Это связано с тем, что при использовании готовых шаблонов для
решения программистских задач, не хватает базы знаний, времени и опыта.
Вот и получается, что использование антипаттернов всегда не рекомендуется, так
как это заведомо проблемное решение, но в то же время и паттерны в неумелых
руках не всегда выдают нужную эффективность. Поэтому использование паттернов и
антипаттернов требует точного обоснования.
Сегодняшняя наша статья посвящена антипаттернам, поэтому приведем несколько
популярных.

Антипаттерны

На самом деле антипаттернов тьма тьмущая. Они возникают, как грибы после дождя.
Это связано с тем, что само программирование не стоит на месте и постоянно растет
объем разработок. Иногда складывается ощущение, что антипаттернов больше чем
паттернов. Их даже делят на 3 основные группы:

  1. Антипатерны архитекторов;
  2. Антипаттерны разработчиков;
  3. Антипаттерны руководства.

Антипаттерны архитекторов

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

Такие антипаттерны приводят к следующим проблемам:

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

Антипаттерны разработчиков

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

  • один класс использует большое разнообразие методов;
  • использование объектов в неподходящем состоянии;
  • когда одни объекты передают данные другим объектам;
  • неправильное применение классов и функций;
  • лишняя сложность при решении задачи;
  • нет возможности проверить работу подпрограммы;
  • постоянное добавление новых скриптов, для решения найденных ошибок;
  • неправильное наименование переменных, методов, функций и т.д;
  • нет возможности удалить код низкого качества, потому что его удаление приводит к фатальным ошибкам;
  • запутанная реализация кода;
  • нет возможности проводить рефакторинг кода;
  • наличие объектов, которые только «притворяются», что содержат какие-то данные;
  • неоправданное использование паттернов;
  • когда копируются и применяются повторяющиеся скрипты;
  • замена функциональности документацией;
  • уверенность, что часто используемое решение спасет ситуацию и в это раз;
  • уверенность в том, что не сработает известная ошибка;
  • слишком ранняя оптимизация кода;
  • создаются решения с нуля, при том что есть уже готовые отличные решения задач;
  • создается плохое решение, когда есть уже готовое отличное решение;
  • ошибки, приводящие к краху программы и невозможности ее реанимировать;
  • новый функционал добавляется как отдельное решение вместо того, чтобы обновить старый функционал;
  • бессмысленное применение различных библиотек, приводящее к тому, что удалить старые невозможно, а установить новые очень сложно;
  • предварительный показ, как будет работать еще ненаписанная функция;
  • каждое новое обновление программы требует все больше и больше ресурсов «железа»;
  • реализация функций только для демонстрации их наличия;
  • и др.

Антипаттерны руководства

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

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

Возможно вам будет интересно почитать статью “Жанр игр «рогалик», что это такое?”

Заключение

Антипаттерны и проблемы идут рядом друг с другом. Антипаттерн — это решение,
которое принял специалист в какой-то конкретной ситуации, чтобы исправить одну
проблему, но по факту эти решения приводят к еще большим проблемам.
Можно сказать, что антипаттерны — это враги программистов и никакой пользы в
себе они не несут. Нехватка времени, спешка и давление заказчика часто
провоцируют их применение. Единственный путь их не применять — это правильно
распределять свое рабочее время и никогда не поддаваться спешки, чтобы делать
все так как надо.

Text.ru - 100.00%
Поделись статьей с друзьями!

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *