AntFarm anti-pattern - стратегии, которых следует избегать, противоядия, помогающие излечиться от

StackOverflow https://stackoverflow.com/questions/514033

Вопрос

Я работаю над 10-страничным веб-сайтом с серверной частью базы данных.Используется более 500 объектов, пытающихся реализовать шаблон MVP в ASP.Net.Я отслеживаю выполнение кода с одной страницы, мой палец был на F-11 в Visual Studio около 40 минут, кажется, конца нет, возможно, более 1000 вызовов методов для одной веб-страницы!Однако, если бы это были всего лишь 50 объектов, это было бы одно дело, выполнение кода змеится по всем этим объектам точно так же, как миллионы муравьев, лихорадочно копошащихся в своем гигантском земляном кургане, пронизанном объектными туннелями. Следовательно, рождается новый анти-паттерн :Муравьиная ферма.

Муравьиная ферма также известен как "OO-Madnes", "OO-Fever", OO-ADD или просто помешанный на шаблонах дизайна.

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

Я бы хотел ввести анти-паттерн в анти-паттерн:GST или "Get Stuff Done", ОН ЖЕ "Get Sh ** done", ОН ЖЕ GRD (GetRDone).Этот шаблон сосредоточен только на том, что в нем написано, на том, чтобы сделать что-то простым способом.Возможно, я попытаюсь подробнее изложить это в более позднем посте, или, пожалуйста, поделитесь своими идеями по поводу этого шаблона противоядия.

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

Это было полезно?

Решение

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

Другие советы

Если это действительно из-за чрезмерного дизайна (а похоже на то), то вот вам несколько синонимов:

Газовый завод
Машина Руба Голдберга
Хитроумное изобретение Хита Робинсона

Но мое личное название для этого "слишком стараюсь изо всех сил".Мои соболезнования.

Ваше здоровье Адриан

Много файлов, где можно было бы сделать что-то одно.Противный.500 объектов на 10 веб-страниц кажутся сумасшедшим соотношением.Рассматривали ли вы возможность выполнения анализа кода в решении?Это может дать вам несколько интересных статистических данных, с помощью которых вы сможете дать отпор.

Также я бы назвал это ПОЦЕЛУЕМ против шаблона.

Спасибо Гломеку за статью за интересное проблемное пространство, раскрывающее суть того, что такое OO, т.е.как создавать свои объекты ... в случае успеха или неудачи, спасибо за ссылку.

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

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

Просто потому, что система написана на ООПЛ, это не делает систему ОО.

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

Критики ООП, основанные на сложности "уместить все это в вашей голове", всегда игнорируют то, что (а) трудно уместить все что угодно в вашей голове (независимо от того, ОО это или нет) и (б) что ОО активно уменьшает необходимость иметь все это в вашей голове в любом случае

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top