Существует ли формальный анти-паттерн для описания сценария?

10

Некоторый код написан для создания электронных таблиц Excel (Office Interop).

  • Код работает очень плохо.
    • Подсистема предназначена для генерации файлов ночью. Производительность не беспокоит ночью.
      • Создается функция для выбора правильного файла из 100 доступных файлов в зависимости от выбранного набора параметров.
      • Поскольку физические файлы существуют, для резервного копирования этих файлов добавлена ​​архивная система (нет причин для архивации. Эти файлы должны создаваться на лету).
      • Эта система не включает файл конфигурации, вместо этого она имеет жестко закодированную функцию «выбора сервера», которая просто отражает сервер, на котором выполняется код.
      • Запланированное задание необходимо для поддержки и запуска этого сервиса.

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

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

Это «каскадный сбой», если хотите. Первоначальная проблема привела к большему количеству плохого кода, большему количеству плохих решений и ненужным накладным расходам. Существует ли формальный анти-паттерн или общий термин для его описания?

P.Brian.Mackey
источник
1
Код, который не масштабируется? Если ваш хостинг-провайдер прекратил работу через месяц, и вам нужно было перенести производственную среду на новые серверы, это означало бы необходимость выпуска программного обеспечения и общей экстренной паники? Я думаю, что вы знаете ответ ...
maple_shaft
1
Это звучит как приложение для создания отчетов, которое я написал около 12 лет назад. Ну кроме отсутствия конфига и жесткого кодирования. Архивация может быть законным требованием, как это было для меня, бесполезным, но все равно требуется. Поначалу производительность была низкой, но создание должным образом оптимизированной отдельной базы данных для отчетов не помогло. Выполнение отчетов в базе данных с высокой степенью транзакций - это начало многих плохих идей.
jfrankcarr

Ответы:

23

Поток лавы?

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

Из Perl Design Wiki: Lava Flow - это «когда код ... извергается и становится постоянным, он становится архитектурной особенностью археологического разнообразия. Вещи строятся на структуре без вопросов и без надежды изменить то, что находится под ними. существующий кодекс рассматривается как историческое любопытство ".

Часто введение системы в эксплуатацию приводит к необходимости поддерживать обратную совместимость (так как многие дополнительные компоненты теперь зависят от нее) с оригинальным, неполным дизайном.

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

Поток лавы считается анти-паттерном, часто встречающимся явлением, ведущим к плохому дизайну.

dsimcha
источник
3
Я видел это раньше (хорошо, хорошо, я вижу это почти каждый день), но я никогда не меняю имя этого.
Кевин
3
Спасибо. Я никогда не слышал, чтобы это называлось так. Я обычно называю эту модель Домом Винчестеров.
jfrankcarr
@jfrankcarr: мне больше нравится твое имя. очень умный.
Кевин
Я не думаю, что это то, что на самом деле означает поток лавы. Идея состоит в том, что код, который больше не используется, застыл, как лава, над ландшафтом реального кода. В случае, если код все еще используется, просто, вероятно, было бы лучше сделать по-другому в первую очередь.
PSR
@psr - раздел "", когда код ... извергается и становится постоянным, становится архитектурной особенностью археологического разнообразия. Вещи строятся на структуре без вопросов и без надежды изменить то, что под ними. Существующий кодекс воспринимается как историческое любопытство. «Он очень
похож на
3

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

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

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

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

PSR
источник
+1 много хороших очков. Вы можете быть правы. Я видел процесс, повторенный несколько раз в этом конкретном месте. Так что это моя мотивация для описания его как анти-шаблон. Вместо того, чтобы исправить эту конкретную проблему.
P.Brian.Mackey
3

Не уверен, поможет ли это, но автоматизация офиса часто является особым случаем:

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

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

Ссылка: http://support.microsoft.com/kb/257757

Билл
источник
+1 - это интересный комментарий. Я буду иметь это в виду. Служба должна остаться тогда. Хотя производительность ужасна. 1 минута для создания таблицы с 5 столбцами и менее 100 строк. Theres 100 электронных таблиц ...
P.Brian.Mackey