Evo i ja da se ukljucim u ovu nadasve interesantnu diskusiju
Da budem iskren, ne slazem se sa vecinom "saveta" koje je ovaj lik naveo. Ajmo redom:
10) Use exceptions
Slazem se sa svim navedenim. Uopste ne razumem sta je Joel sa onim tekstom hteo da kaze.
9) (Don't) Use unsigned integers for values that can only be positive
Neki jezici zaista ne omogucavaju definisanje unsigned vrednosti (PHP, Java), ali tamo gde je to jezikom omoguceno (C/C++) treba ga koristiti. Ne samo da se tako kreira robusniji kod, vec se stedi i memorija. Mozda nebitno za danasnje programe, ali kod baza nije isto koristiti big int kada recimo int unsigned zavrsava posao (veca tabela = sporija tabela).
8) (Don't) Design classes parallel to their physical counterparts
Takodje se apsolutno slazem sa ovom tvrdnjom, narocito sa delom da je inheritance "overrated". Licno sam vidjao neke PHP bibliotete gde je klasa koju koristim "10-to koleno" od osnovne klase. Mislim da bi svi pocetnici u OOP dizajnu trebalo da malo citaju Bruce Eckela, koji jednostavno savetuje koriscenje kompozicije kad god niste sigurni da li koristiti nasledjivanje ili kompoziciju.
car have engine,
car is not engine.
7) (Don't)Make sure your team shares a common coding standard
Ocigledno da autor teksta nikada nije morao da edituje fajl na kome su radila 3 programera gde je svako koristio sopstveni koding standard. Sto se mene tice pravila su sledeca:
- Postoji definisan koding standard za celu kompaniju ili je deo specifikacije projekta
ili
- (losije resenje) Svaki developer koristi svoj stil ali se prilikom izmena vec napisanog koda postuje standard koriscen u fajlu (na taj nacin barem nemas 3 stila u jednom fajlu)
6) (Don't)Write lots of comments
Komentare
treba pisati, tamo gde je to potrebno. Dakle ne:
//incrementing i
i++;
nego
//moving to next element
i++;
i sl.
Inace, ja narocito insistiram na kreiranju API dokumentacije, pa je phpdocumentor stil komentara (pandan javadoc kod Jave) standardni deo koding specifikacije koju sam pominjao gore.
5) (Don't)Use accessors or properties rather than public fields
Ovo je vec jeres
Necu ni da komentarisem