Recent posts

Prozone IT Solutions

Čistiji kod, mirnija glava i manje sedih

  „Potrebno je manje vremena da se uradi nešto dobro, nego da se objasni zašto ste to uradili pogrešno.“ – HV Longfelou   Od mog prvog susreta sa taskovima i implamentacijom, još na fakultetu, pa sve do danas, moj pogled na programiranje i organizaciju koda se drastično promenio. U početku, kao i svakom junioru, bilo […]

Prozone IT Solutions

Proslavili smo 16 godina Prozone-a

U petak, 23. novembra obeležili smo 16. godišnjicu osnivanja firme u Golf city centru na SPENS-u. Za sjajnu atomsferu bili su zaslužni „Viktorija bend“, a veče je obeležila dodela nagrada za najkolege gde su podeljene diplome i pokloni za sedamnaest kategorija, a neke od njih su „Modna mačka“, „Najveseliji kolega“, „Najbrižniji kolega.“ Kolege su imale priliku […]

Prozone IT Solutions

„Šta treba da znate pre nego što počnete da radite?“ – Održana radionica u okviru YSF

U ponedeljak, 19. novembra, predstavnice Prozone-a, Aleksandra i Milica su održale  radionicu na temu “Šta treba da znate pre nego što počnete da radite? Postavljanje ciljeva u IT karijeri.“ Ova radionica je održana u prostorijama Rektorata u okviru Youth Speak Forum-a koju organizuje studentsko udruženje AIESEC, a Prozone je bio jedan od pokrovitelja događaja.

Čistiji kod, mirnija glava i manje sedih

 

„Potrebno je manje vremena da se uradi nešto dobro, nego da se objasni zašto ste to uradili pogrešno.“ – HV Longfelou

 

Od mog prvog susreta sa taskovima i implamentacijom, još na fakultetu, pa sve do danas, moj pogled na programiranje i organizaciju koda se drastično promenio. U početku, kao i svakom junioru, bilo mi je bitno sklepati kod, nebitno kakav, bitno je samo da radi ono što je traženo. Potpuno je bilo nebitno koliko metoda ću implementirati, linija koda otkucati i koliko će to performantno biti. Onda vremenom počnete da održavate taj svoj špageti kod i to posle godinu dana pauze. Business logika se zaboravila, a komentara u kodu nema. Nimalo deskriptivan kod, pa još neke nebuloze napisane. Hvatate se za glavu i prokomentarišete: „Ma koji je indijanac ovo čekićao? Upsss, ja!“. Muka muku stiže, a kraj joj se ne nazire. Svi koji su održavali bar jedan projekat koji je u produkciji znaju o patnji koju spominjem.

Kod kojim ste se hvalili u jednom trenutku postaje kod zbog kojeg čupate kosu na glavi, pod uslovom da je preostala još koja dlaka. Onda, poučeni tim iskustvom, na novom projektu se trudite da ne ponavljate iste greške već da sve što možete unapredite i podignete na viši nivo. Sve u cilju da Vas ne boli glava kad posle nekog vremena bacite pogled na svoj kod. U tom trenutku više Vam nije najbitnije da kod bude funkcionalan već i da bude čitljiv i održiv. Počinjete da refaktorišete svoj kod i uvidite da je neke stvari moguće napisati na jednostavniji i bolji način.

U želji da naučim više i unapredim svoje znanje, gledao sam različite video tutorijale i čitao mnogobrojne blogove, kako naših, tako i stranih programera. Za početak sam počeo sa osnovnim stvarima. Trudio sam se da držim Single Responsibility metoda i klase. Metod treba da radi isključivo jednu stvar. Nema više getAndUpdate ili saveOrChange, već samo get, find, validate…. Takođe, trudio sam se da sve private metode stavim na kraj klase, tj. posle public metoda. Kad imenujete metode, slobodno dajte sebi oduška i deskriptivno napišite naziv te metode. Tako da znate šta taj metod radi kada pročitate njegov naziv, a ne getAndUpdate. Šta get i čega update? To znači da morate da bacite pogled na sam metod kako biste skapirali šta je pisac hteo da kaže. Ne brinite, neću Vas gnjaviti i smarati bad smellovima, ali nije na odmet i to spomenuti. Možda u nekom sledećem blogu.

Na mestima gde procenite da je potrebno, slobodno stavite komentar. Neće Vam pasti kruna sa glave ako opišete zašto taj metod radi na baš taj način. Možda sutra baš sebi ili svom kolegi uštedite mnogo vremena i nećete morati da razbijate glavu i da izmišljate toplu vodu. Svi mi, mlađi programeri (dobro, nisam baš mlad i imam po koju sedu), pribegavamo brzim rešenjima kako bismo pokazali svoju produktivnost i pokazali sebe u boljem svetlu, a ne slutimo da će taj loš kod stići na naplatu kad tad.

Trudite se da ne duplirate kod, već taj kod izdvojite u neku posebnu klasu/metod, pa to iskoristite dalje gde god je to moguće. Većini programera je merak da uradi „copy-paste” koda. Ovakve stvari, trudite se prve da iskorenite. Kako znate da je kod koji ste kopirali dobar?

Alo, derane, obradi taj izuzetak kako valja. Postoji, recimo, BusinessException ili SystemException. Ne moraš uvek upotrebiti Exception. Držiš se te klase kao pijan plota.

Upamtite da ste upravo Vi najbitniji projekat na kojem ćete raditi!

Počnite da unapređujete svoj kod od sitnih i osnovnih stvari. Trudite se da stalno radite na sebi i svom kodu. Iskoristite svaki novi projekat da eksperimentišete sa nečim novim i da unapredite postojeće pristupe. Ako u svakom novom projektu unapredite bar jednu stvar u svom programiranju, napredovaćete mnogo, a da toga niste ni svesni. Postaćete svesni tek kad se ponovi kompleksna situacija, a Vaš kod i Vi ste spremni da odgovorite na svaki zahtev klijenta u svega par linija koda, jer ste prethodno dobro optimizovali i organizovali projekat. Trudite se u svom radu da posmatrate širu sliku, a ne samo deo koji je potreban za Vaš task. Ovaj deo bloga je idealan da upotrebim ono „think out of the box“.

Ne znam, da li radite kao freelancer ili ste deo razvojnog tima, ali trudite se da praktikujete Code Review. Meni mnogo pomaže da unapredim svoje znanje i ispravim neke greške koje mi se potkradu. Savetujte se sa kolegama i poslušajte šta to pametno imaju sa kažu. Možda uhvatite neku foru koja Vam bude veoma korisna i upotrebite je u pravom trenutku da se izvučete iz kompleksnih situacija. Nije loše imati neki Hello World projekat kod kuće, koji će Vam služiti da kuckate i da igrate sa novim pristupima. Imamo tu sreću da radimo posao koji je veoma zanimljiv i svaki dan za sobom nosi nove i interesantne probleme za rešavanje. Šteta bi bila da ne iskoristite tu širinu i slobodu u pristupu i rešavanju problema koju Vam nudi taj posao

Metod ne treba da traje duže od flaše piva

Za sve one koji žele da malo više zagrebu ispod površine kada je u pitanju čistoća koda, savetujem da u pauzi od gledanja Osvetnika, Star Wars-a, bace pogled na video tutorijale ujka Boba, pod naslovom Clean Coders. Meni je to preporučio jedan moj malo stariji kolega i veoma sam mu zahvalan. Ako ti, dragi čitaoče i napaćena programerska dušo, imaš neki predlog za kvalitetno štivo na ovu temu, nađi me na LinkedIn-u i slobodno mi šibni link. Biću ti zahvalan.

Mislite da mlatim praznu priču? Je l’ održavate svoju higijenu? Nadam se da se kupate, perete zube… Što ne biste održavali i higijenu koda. Nisam ja ovde izmislio toplu vodu, ni pričao o stvarima koje su nove, ali vrlo moguće da sam spomenuo nešto na šta u prvi mah niste obraćali pažnju. Biće mi drago ako će bar jedan developerski mučenik posle ovog mog škrabanja otići i obrisati Literal String iz koda.

Ne budite lenji i neka Vas ne mrzi kad vidite neki propust da to ispravite, čak i kad je taj kod funkcionalan. Ukoliko ste u frci sa vremenom, stavite TODO ili FIXME, pa se vratite na to kad se ukaže prilika. Budite pažljivi i nemojte olako shvatati refaktorisanje. Naročito ako imate test tim koji će morati opet da istestira nešto što je zatvoreno i isporučeno. Svaki kod koliko god da je dobro napisan, može jos bolje! Ne zalećite se i vodite računa šta radite…

Tema sa kojom sam se uhvatio u koštac je veoma opširna i ne bih da nastavim da Vas smaram. Verujem da ste već počeli da zevate. Cilj mi je bio da kroz određenu dozu humora, mladi naraštaji, a pogotovo oni koji su se tek zaposlili, malo više pažnje obrate na stvari na koje trenutno ne obraćaju dovoljno. Ako sam uspeo nekoga da bar malo motivišem onda je škrabanje ovog teksta imalo svrhu.

 

Do sledećeg škrabanja,

Ilija Veselinović,

Software Developer