Код равиолей - почему антишаблон? [закрытый]

Я недавно столкнулся с термином 'Объект бога', который был описан как 'антишаблон'. Я услышал о плохих методах кодирования, но я никогда не слышал их описанный таким образом.

Таким образом, я препятствовал Википедии для обнаружения больше, и я нашел, что существует антишаблон, названный 'Код равиолей', который описан как " охарактеризовавший многими небольшими и (идеально) слабо связанными компонентами программного обеспечения".

Я озадачен - почему это - плохая вещь?

30
задан Justin Niessner 12 January 2010 в 20:21
поделиться

6 ответов

Spaghetheti:

Код спагетти является Pejorative срок Для исходного кода

Ravioli:

код Ravioli представляет собой тип компьютера Структура программы, отличающаяся Количество маленьких и (в идеале) Свободно связанные программные компоненты. Термин в сравнении с Код спагетти, сравнение программы структура к пастам;

Это сравнивает их. Это не говорит, что это анти-шаблон.

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

Редактировать: они улучшили статью. Является ли анти-образцом, потому что

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

31
ответ дан 27 November 2019 в 23:23
поделиться

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

Что касается плохой стороны, Googling дает комментарий в http://developers.slashdot.org/comments.pl?sid=236721&cid=19330355 :

Проблема в том, что она имеет тенденцию привести к функциям (методам и т. Д.) Без истинной когерентности, и она часто оставляет код для реализации даже что-то довольно простых разбросанных по очень большому количеству функций. Любой, кто должен поддерживать код, должен понять, как все звонки между всеми битами работают, воссоздание практически все плохое плохое коду спагетти, за исключением функций, а не GOTO. ...

Вы должны судить, если это разумно :).

14
ответ дан 27 November 2019 в 23:23
поделиться

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

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

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

4
ответ дан 27 November 2019 в 23:23
поделиться

Это не обязательно, это? Статья Wikipedia не описывает это так плохо. Количество свободно связанных программных компонентов, где размер и количество этих компонентов разумно относительно проблемного домена, звучит довольно идеально для меня.

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

3
ответ дан 27 November 2019 в 23:23
поделиться

Читая статью, Спагетти - это анти-паттерн; но Равиоли и Лазанья - не анти-паттерн.

2
ответ дан 27 November 2019 в 23:23
поделиться

В значительной степени единственная причина «Кодекс Равиоли» выжила как фраза, потому что программисты имеют врожденный смысл юмора. Попробуйте, как я могу - и поверь мне, я пробовал - очень трудно придумать пример объектно-ориентированного кода, который был оба (а) упакованным таким, что было очень трудно ориентироваться в том же мета-смысле, что " Код спагетти «Трудно ориентироваться, и (b) отражал частый анти-образной узор в кодировке.

Лучший пример «кода Ravioli», который я могу придумать, является множеством классов, каждая жестко упакована, но где действительно трудно выкопать там, где находится основной поток выполнения. Нервные сетевые приложения могут демонстрировать это, но это своего рода точка. Более обыдечный пример был бы код пользовательского интерфейса, который очень сильно ориентирован на события, но, опять же, трудно пойти за борт с этим - если что-то, большинство пользовательского интерфейса не приводят к событиям достаточно .

7
ответ дан 27 November 2019 в 23:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: