Boje koda

3 min

Kod se može obojiti.

Takođe, prestanimo više da pišemo anemične servisne i repo klase, kao i da mislimo u imenicama.

Uradio sam malu praktično-pokaznu programersku vežbu. Cilj je bio sledeći:

  1. Razdvojiti funkcije, podatke i akcije - po bojama.
  2. Napraviti fleksibilnu web aplikaciju koja koristi obojeni kod.

Boje

OOP način programiranja ne vodi mnogo računa o čistoći funkcija. Klase se koriste za sve; često i za prosto grupisanje biznis funkcija. Rezultat su ogromne, anemične klase sa gomilom metoda. Ovakve klase nemaju nikakvog domenskog smisla.

Može to i bolje. Ideja je zaista jednostavna:

Da bi potpomogli razmišljanje na tu temu, možemo “obojiti” kod. Zašto boje? Prosto, trebao mi je još način kategorizacije.

Osnovne boje koda:

Izvedene boje:

Zgodna računica boja:

DATA + FUNCTION   -> 🟦 + 🟨 == 🟩 (green is good!)
DATA + STATE      -> 🟦 + 🟥 == 🟪
FUNCTION + STATE  -> 🟨 + 🟥 == ACTION 🟧
FUNCTION + ACTION -> 🟨 + 🟧 == ACTION 🟧
OOP               -> 🟦 + 🟥 + 🟨 == ⬜️ (avoid!)

Da sumiram: kada pišeš nekakav programski konstrukt, on bi trebalo da bude jedna od pet pomenutih boja. Stanje je zarazno i menja sve druge boje. Zeleno je dobro.

Nije ovo nekakva originalna ideja; i drugi propovedaju razdvajanje čistih funkcija i podataka. Bojom samo naglašavam ovakav način razmišljanja i razdvajanja.

Projekat

Prateći princip sa bojama, napravio sam malu, pokaznu web aplikaciju. Izabrao sam Kotlin, jer mi nudi taman dovoljno da iskažem šta želim.

Sumarno o aplikaciji:

Stanje pokazne aplikacije je na nekih 3 od maksimalne ocene 5. Ima tu još stvari koje bih dodao - no većina je na stranu koja se ne tiče teme eksperimenta.

Repositorijum

Početi ovde: https://github.com/igr/color-code

Izdvajam: color wheel i projekat.

Samo opušteno, na kraju.

🧧
Nisam definisan svojim stavovima. Stavove usvajamo, menjamo, nadograđujemo, ali oni ne čine nas same. Manje je važno da li se slažemo, koliko da se razumemo.