Интернет магазин китайских планшетных компьютеров



Компьютеры - Антипаттерн

23 января 2011


Оглавление:
1. Антипаттерн
2. Некоторые организационные анти-паттерны
3. Некоторые социальные анти-паттерны
4. Шуточные анти-паттерны



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

Термин происходит из информатики, из книги «Банды четырёх» Шаблоны проектирования, которая заложила примеры практики хорошего программирования. Авторы назвали эти хорошие методы «шаблонами проектирования», и противоположными им являются «анти-паттерны». Частью хорошей практики программирования является избегание анти-паттернов.

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

Некоторые различаемые анти-паттерны в программировании

См. Категория:Анти-паттерны для более подробного списка.

Анти-паттерны в управлении разработкой ПО

  • Дым и зеркала: Демонстрация того, как будут выглядеть ненаписанные функции
  • Раздувание ПО: Разрешение последующим версиям системы требовать всё больше и больше ресурсов
  • Функции для галочки: Превращение программы в конгломерат плохо реализованных и не связанных между собой функций

Анти-паттерны в разработке ПО

  • Инверсия абстракции: Создание простых конструкций поверх сложных
  • Неопределённая точка зрения: Представление модели без спецификации её точки рассмотрения
  • Большой комок грязи: Система с нераспознаваемой структурой
  • Блоб: см. Божественный объект
  • Бензиновая фабрика: Необязательная сложность дизайна
  • Затычка на ввод данных: Забывчивость в спецификации и выполнении поддержки возможного неверного ввода
  • Раздувание интерфейса: Изготовление интерфейса очень мощным и очень трудным для осуществления
  • Магическая кнопка: Выполнение результатов действий пользователя в виде неподходящего интерфейса. Например, в системах типа Delphi это написание прикладной логики в обработчиках нажатий на кнопку
  • Перестыковка: Процесс внедрения ненужной зависимости
  • Дымоход: Редко поддерживаемая сборка плохо связанных компонентов
  • Гонки: непредвидение возможности наступления событий в порядке, отличном от ожидаемого

Анти-паттерны в объектно-ориентированном программировании

  • Базовый класс-утилита: Наследование функциональности из класса-утилиты вместо делегирования к нему
  • Вызов предка: Для реализации прикладной функциональности методу класса-потомка требуется в обязательном порядке вызывать те же методы класса-предка
  • Ошибка пустого подкласса: Создание класса, который не проходит «проверку пустоты подкласса» из-за различного поведения по сравнению с классом, который наследуется от него без изменений
  • Божественный объект: Концентрация слишком большого количества функций в одной части системы
  • Объектная клоака: Переиспользование объектов, находящихся в непригодном для переиспользования состоянии
  • Полтергейст: Объекты, чьё единственное предназначение — передавать информацию другим объектам
  • Проблема йо-йо: Чрезмерная размытость сильно связанного кода по иерархии классов
  • Одиночество: Неумесное использование паттерна одиночка

Анти-паттерны в программировании

  • Ненужная сложность: Внесение ненужной сложности в решение
  • Действие на расстоянии: Неожиданное взаимодействие между широко разделёнными частями системы
  • Накопить и запустить: Установка параметров подпрограмм в наборе глобальных переменных
  • Слепая вера: Недостаточная проверка корректности исправления ошибки или результата работы подпрограммы
  • Лодочный якорь: Сохранение более не используемой части системы
  • Активное ожидание: Потребление ресурсов ЦПУ во время ожидания события, обычно при помощи постоянно повторяемой проверки, вместо того, чтобы использовать асинхронное программирование
  • Кэширование ошибки: Забывать сбросить флаг ошибки после её обработки
  • Воняющий подгузник: Сброс флага ошибки без ее обработки или передачи вышестоящему обработчику
  • Проверка типа вместо интерфейса: Проверка того, что объект имеет специфический тип в то время, когда требуется только определённый интерфейс
  • Инерция кода: Сверхограничение части системы путём постоянного подразумевания её поведения в других частях системы
  • Кодирование путём исключения: Добавление нового кода для поддержки каждого специального распознанного случая
  • Таинственный код: Использование аббревиатур вместо мнемоничных имён
  • Жёсткое кодирование: Внедрение предположений об окружении системы в слишком большом количестве точек её реализации
  • Мягкое кодирование: Патологическая боязнь жёсткого кодирования, приводящая к тому, что настраивается всё что угодно, при этом конфигурирование системы само по себе превращается в программирование
  • Поток лавы: Сохранение нежелательного кода по причине того, что его удаление слишком дорого или будет иметь непредсказуемые последствия
  • Магические числа: Включение в алгоритмы чисел без объяснений их смысла
  • Процедурный код: Когда другая парадигма является более подходящей
  • Спагетти-код: Код с чрезмерно запутанным порядком выполнения
  • Мыльный пузырь: Класс, инициализированый мусором, максимально долго притворяется, что содержит какие-то данные

Методологические анти-паттерны

  • Программирование методом копирования-вставки: Копирование существующего кода вместо создания общих решений
  • Дефакторинг: Процесс уничтожения функциональности и замены её документацией
  • Золотой молоток: Сильная уверенность в том, что любимое решение универсально применимо. Название происходит от поговорки «когда в руках молоток, все проблемы кажутся гвоздями»
  • Фактор невероятности: Предположение о невозможности того, что сработает известная ошибка
  • Преждевременная оптимизация: Оптимизация на основе недостаточной информации
  • Изобретение колеса: Создание с нуля, вместо использования готового решения
  • Изобретение квадратного колеса: Создание плохого решения, когда существует хорошее известное решение

Анти-паттерны управления конфигурацией

  • Ад зависимостей: Проблемы с версиями требующихся продуктов, особенно в системах UNIX/GNU/Linux
  • DLL-ад: Проблемы с версиями, доступностью и увеличением количества DLL, особенно в Microsoft Windows


Просмотров: 2584


<<< Rich Internet Application
Архитектура программного обеспечения >>>