SOLID principi, sa ukusom čokolade

SOLID principi, sa ukusom čokolade


Dok sam mojoj Tari objašnjavao neke osnovne principe programiranja, shvatio sam da ih deci možeš objasniti mnogo lakše ako ih "prevedeš" u nešto što mogu da vide, pomirišu i razumeju. Tako je nastala naša fabrika čokolade. U njoj se ne prave samo čokolade, nego i razni pojmovi koje programeri često pretvore u nešto teže od gorkog kakaa. Zato, ako može da ih razume dete od deset godina — može i svako od nas posle osam sati debugovanja.

Ovo je priča o SOLID principima, ali sa ukusom čokolade.

🍫 Mini rezime za nestrpljive

S — Jedna odgovornost.

O — Dodaj novo, ne kvari staro.

L — Zameni bez drame.

I — Manje dugmića, manje problema.

D — Ne veži se za konkretne sprave.

Ako ovo zapamtiš, možeš da praviš i kod i čokoladu bez da eksplodira fabrika.


🍫 S — Single Responsibility Principle

(Jedna odgovornost po mašini)

U našoj fabrici svaka mašina ima svoj zadatak: jedna topi kakao, druga sipa fil, treća pakuje tablu čokolade.

Ako jedna mašina pokuša da radi sve — da topi, sipa, pakuje i lepi etikete — imaš problem: čokolada se zaglavi, etikete se zalepe ukrivo, a majstor počne da preispituje životne odluke.

U programiranju je isto. Svaka klasa treba da ima jednu odgovornost. Ako ti komponenta rešava login, renderuje UI i šalje notifikacije — to nije komponenta, to je sapunica.

Pravilo: jedna mašina – jedan posao. Sve ostalo vodi u čokoladni haos.


🍫 O — Open/Closed Principle

(Otvoreno za nadogradnju, zatvoreno za čačkanje)

Danas pravimo mlečne i crne čokolade, a sutra želimo i onu sa keksom.

Nećemo rasklapati stare mašine da bismo dodali novi ukus. Dodaćemo novi modul koji zna da umeša keks.

Tako radi i dobar kod. Ne menjaš postojeće komponente svaki put kad ti dođe nova ideja, već gradiš tako da možeš dodati novo bez rušenja starog.

Pravilo: dodaj novo, ne kvari staro. Kao LEGO, ne kao "smederevac" koji ima “karakter”.


🍫 L — Liskov Substitution Principle

(Zameni bez drame)

Zamisli mašinu koja sipa fil u čokolade. Ako sutra ubacimo drugu mašinu — recimo onu koja sipa karamelu umesto nugata — fabrika ne bi smela da se zbuni i linija da stane. Mašina i dalje sipa fil, samo drugačiji.

To je poenta ovog principa: ako zameniš jedan deo sistema drugim sličnim, sve i dalje mora da radi bez lomljenja i psovki.

Pravilo: ako zamenjuješ mašinu, linija i dalje mora da teče. I niko ne sme da primeti razliku osim knjigovođe.


🍫 I — Interface Segregation Principle

(Ne daj svakome sve dugmiće)

Radniku koji pakuje čokolade ne treba dugme “Dodaj lešnik”. Ako svima damo kontrolnu tablu sa sto opcija, isto je kao da smo pustili majmuna u tenak.

U kodu, to znači: bolje više malih interfejsa, nego jedan ogroman koji sve zna i svima smeta. Svaka komponenta dobija samo ono što joj stvarno treba.

*Pravilo:*manje izbora, manje grešaka. Minimalizam spašava i kod i čokoladu.


🍫 D — Dependency Inversion Principle

(Ne zaljubljuj se u jednu mašinu)

Naša linija trenutno koristi "Čoko Master". Sutra stigne novi "Turbo Čoko Master 5000". Ako sve stane zato što smo se vezali za stari model — nismo napravili pametnu fabriku, već ljubavnu dramu.

Rešenje je da se sistem ne oslanja na konkretne mašine, nego na pravila ponašanja: “treba da može da umeša smesu” – bez obzira koji model to radi.

U kodu, to znači: ne zavisi od konkretnih klasa, već od apstrakcija.

Pravilo: voli standard, ne model.


🍫 Zaključak

SOLID principi nisu magija, ni garancija da će tvoj kod mirisati na vanilu. Oni su skup malih navika koje ti pomažu da kod ostane čitljiv i da sistem ne gori. Bar ne svakog petka popodne.

Ako možeš detetu da objasniš zašto ne treba sve sastojke da sipa u istu činiju — možeš i kolegi da objasniš zašto jedna klasa ne treba da radi sve.

IT Polako, sve ćemo stići. I kod, i čokoladu. 🍫