Слоеви или Features Вечната Програмерска дилема

Еве едно прашање што програмерите го решаваат секој пат одново, иако одговорот никогаш не е ни јасен ни финален. Два тима, два света, и секогаш иста приказна.

Едниот тим вели: стави ги контролерите во една папка, моделите во друга, тестовите во трета. Убаво, чисто, предвидливо. Другиот тим пак вели: не, бе, сe што е поврзано со една фича треба да е на едно место. Контролери, модели, тестови, сe заедно, по домен.

И секој пат иста дилема!


Кога рамката одлучува наместо тебе

Ако работиш со Django, доменскиот пристап е вграден во темелите. Rails, Laravel и поголемиот дел од останатите те туркаат кон слоеви. Микрофрамеворците по дефолт исто се слоевити, но никој не те спречува да правиш што сакаш. Фронтендот? Прави си колку сакаш, алатот нема мислење.

Постојат и хибриди. Во Django секој app е домен, но внатре е слоевит. Rails има engine-и, со кои дел од логиката се издвојува речиси во посебна апликација. Обично за нешто сериозно изолирано, форум, систем за мониторинг и слично.


Зошто доменскиот пристап не е секогаш решение

Идејата за организација по features звучи атрактивно. Теоретски. Но чим се обидеш тоа да го ставиш во база на целиот проект… уште на старт влегуваш во замка.

Тоа е исто ко да правиш микросервисна архитектура во еден ден. Одеднаш мора да решаваш прашања за кои немаш одговори:

  • Кој зависи од кого?
  • Ако зависат еден од друг, што правиш?
  • Логиката на спојот меѓу две фичи, каде оди?

Само погледнете колку патерни и расправии постојат во Django заедницата токму за ова.


Поедноставниот пат

Спротивниот правец е полесен. Почнуваш едноставно, сe заедно, а потоа , кога навистина има потреба… изолираш. Сервиси, евенти, посебни пакети.

Во озбилен проект на кои сум работел, на пример, едиторот е посебен пакет, во посебен репозиториум. Поголемо движење, да, но границите се кристално јасни.

Значи не мора да почнеш со апсолутна чистота. Важно е да знаеш кога и зошто да изолираш, а не да го правиш тоа рефлексно, само затоа што некој на youtube или форум рекол дека така е „скалабилно”.


Вие како ги редите вашите прокети?

Стани премиум член и доби пристап до сите содржини, специјален попуст на над 2.200 производи во ИТ маркет, верификуван профил и можност за огласување на ИТ Огласник. Плус ќе го поддржиш медиумот кој го градиме цели 16 години!

basic

членство

42 ден./мес

зачлени се

1337

членство

125 ден./мес

зачлени се
* плаќањето е на годишно ниво

Доколку веќе имаш премиум членство, најави се тука.

Добивај известувања
Извести ме за
guest
0 Коментари
Најнови
Најстари Со највеќе гласови
Inline Feedbacks
View all comments