2009-12-04 5 views
5

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

+1

«Используется ли признанный анти-паттерн, когда-либо доказавший свою действительность в определенном конкретном случае?» - Здесь, на планете Земля, это доказывается каждый раз, когда кто-то отправляет программный продукт =) –

ответ

6

Anti-Patterns по-прежнему так широко распространены только , потому что они решают конкретную проблему (при создании 10 новых). Также известен как обход. Но как они говорят? Ничто не длится дольше, чем временное.

На самом деле я считаю, что мы все были бы безработными, если бы все было сделано с самого начала.

8

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

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

2

Самая большая проблема, которая была решена в моем опыте, - это запуск нового приложения.

Когда команда разработчиков внедрила новое приложение, график выполнения правильного решения, как правило, слишком велик для управления. Поэтому, часто, вы кодируете для соответствия временной шкале, а не «правильность» решения, чтобы добраться до даты запуска (но есть другие, кодирующие «правильное» решение для следующего rev), что делает его по существу «отбрасыванием», код.

1

Один программный анти-шаблон Softcoding, также определенный в the daily WTF. Софткодирование происходит, когда программисты помещают материал, который «должен быть» внутри кода во внешние ресурсы.

Я работаю с программным обеспечением, которое некоторые могут сказать, страдает от softcoding. Внешние файлы управляют программным обеспечением. Эти внешние файлы являются микроязыком: они должны быть скомпилированы в XML, прежде чем программное обеспечение сможет их использовать. Этот микроязык имеет свои собственные инструменты.

Но softcoding всегда в виду наблюдателя.

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

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

+0

Я не думаю, что то, что вы описываете, является примером softcode. Я разрабатывал подобное программное обеспечение, которое загружало его логику с какого-то пользовательского языка, и мы также нашли его очень полезным. Я рассматривал наше приложение как язык интерпретатора, например shell - ваше приложение просто выполняет скрипт, написанный на языке на нескольких языках. Softcode говорит больше о значениях descrete, а не о логике внешнего приложения. – dimba

+0

Это звучит как программирование, управляемое данными, или DSL, как правило, признанные как хорошие вещи. –

0

Существует причина назвать это скорее шаблоном, чем законом.

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

И более длинный список примеров анти-шаблонов, вызывающих проблемы.

Я использовал магические кнопки несколько раз, из-за незнания или лености, а иногда и на самом деле работал очень хорошо, и оказалось, что мне не нужна дополнительная абстракция надлежащего MVC.