Тези метафорични термини са неофициални, но широко използвани в софтуерното инженерство, за да описват различни структури (и проблеми) в кода – като се използват видове италианска храна за илюстрация.
Spaghetti Code
Код, който е заплетен, хаотичен и труден за проследяване – напомня на купчина сварени спагети.
Характеристики:
- Без ясна структура
- Много взаимозависимости
- Често липсва модулност
- Кодът е труден за четене, поддръжка и рефакториране
Причина:
Обикновено се получава при лошо проектиране, бързи „кръпки“ и липса на стандарти.
Lasagna Code
Код, организиран на множество слоеве, както е лазанята – но слоевете са твърдо свързани (tight coupling), което прави поддръжката трудна.
Характеристики:
- Слоеве: UI → Business logic → Data access
- Но всеки слой знае твърде много за другите
- Промяна в един слой изисква промени в останалите
Проблем:
Нарушава се принципът за слаба свързаност (loose coupling).
Ravioli Code
Код, разделен на много малки, добре капсулирани модули – както са равиолите.
Характеристики:
- Модули с ясни отговорности (на пръв поглед добре)
- Всеки модул е „самостоятелен“ и четим
- Но… системата като цяло става трудна за навигиране и разбиране
Проблем:
Твърде много „малки кутии“, трудна цялостна картина → затруднена интеграция.
Pizza Code (рядко използван, но забавен термин)
Код, който изглежда добре на повърхността (като пица) – модерен, с хубав UI – но отдолу няма добра логика или структура.
Характеристики:
- Привлекателен интерфейс
- Липса на добър бекенд дизайн
- Може да има проблеми със сигурността, производителността и мащабируемостта
Синоним: Code smell with style.
Обобщение:
| Термин | Какво означава | Основен проблем |
|---|---|---|
| Spaghetti | Заплетен код | Липса на структура |
| Lasagna | Слоест, но свързан код | Твърдо обвързани слоеве |
| Ravioli | Много малки модули | Трудна навигация между модулите |
| Pizza | Повърхностно добре, но лоша архитектура | Лъскав UI, но слаб бекенд |