1) samo vysvetlujuce pomenovanie premennych, metod a tried
2) nepisat sialene dlhe metody (mal som tu cest s kodom kde som refaktoroval metodu dlhu 600 riadkov kodu, opakujem, kodu, nie kodu + komentarov). Takisto nepisat metody ktorych jedinou ulohou je zabalit volanie dvoch inych metod do jedneho riadku, pretoze povodna metoda bola o riadok dlhsia ako XX maximalne dovolenych riadkov. -> ak s tym ma niekto pri review problem, treba si proste dupnut, vyplati sa to, zvysi sa citatelnost, nebude tam milion metod s cudnymi menami (lebo tie dobre a zrozumitelne su uz zabrane) a kod bude kludne o X percent kratsi.
3) Rozumna struktura tried (podobne ako bod 2, najma jeho druha cast, nemat zbytocne kratke/male veci). Na primitivnu aplikaciu typu konzolova kalkulacka ktoru mate urobit v skole nepotrebujete 25tried aby ste ukazali ze poznate OOP koncept. Stacia vam dve, input_parser a calculator ak uz v zadani po vas OOP chcu. Proste naco mi je trieda ktora ma 2 premenne a k tomu dake 4 metody pracujuce s nimi, ktore su sice ako tak spolu logicky zgrupene ked ich stale mozem mat vo vyssej triede a nenarobi to ziaden problem (musia tam pravdaze logicky pasovat, islo mi o to poukazat ze rozbijat veci na mensie za kazdu cenu lebo "potom to je jasnejsie" je od urcitej hlbky struktury kontraproduktivne).
4) Mysliet pri pisani kodu na to ako sa bude testovat (nehovorim nutne o pouziti TDD, ale mat v hlave aspon matnu predstavu o tom ako na to bude napisany unit/integration test je tiez dobre). Na druhu stranu k tomuto, plati bod 3, pricuchol som si ku kodu, kde sa ocividne vyblaznili a skusali rozne sialenosti, rozne moznosti na aplikovanie DI, struktura tak hlboka ze som myslel ze som si nechal vypisat "tree /" (rozbijali vsetko na co najmensie kusky, aj ked to uz davno nedavalo zmysel). Pridanie akehokovlek kodu bolo tak 50% casu pridavanim novej funcionality, 50% casu opravovanie rozbitych testov. Normalne som sa cudoval ze to je schopne vobec bezat.
5) Komentare na komplikovanejsie casti kodu - nemusi vsetko byt v officialnej dokumentacii metody, ani pred kazdou podmienkou/cyklom/... Je skvele ked su komplikovanejsie metody popisane kludne v ramci jednoho dlheho komentara v tele metody, ala:
//offiko dokumentacia, robim (strucne) toto, vraciam toto
//vstupne parametre a ich popis
NejakaTrieda nejakaMetoda(...){
//tu bude ten spominany dlhy koment
//proste nieco co ludsky vysvetli oc tu kraca aj bez potreby studovania a debugovania kodu
//pretoze niekedy kod nejde napisat tak aby bol zrozumitelny na prvy pohlad
sialene_zlozity_kod();
...
return nejakaTrieda;
}