Igen, vannak olyan folyamatok, amiket nehez elnevezni. Altalaban ilyenkor kiderul, hogy mar alapbol rosszul neveztem el az osztalyt, vagy Single Responsibility Principle violation van a kodomban. (Megkeresni, refactor, ha nem megy, akkor segitsegkeres)
Es egyetertek, hogy szelsoseges esetekben szukseg van olvashatosagot ronto kodoptimalizalasra, esetleg kommentekre. (ld: Clean Coder Blog - Necessary Comments)
Ekkor valoszinuleg a tesztek fogjak erthetove tenni a rendszert. Formalisan leirjak, hogy mire kepes a rendszer, es mik a hatarai (Amit nem teszteltunk, az nem letezik).
Ha nincsenek tesztek, akkor onnantol kezdve az a kod egy veszett fejsze nyele, mert az eredeti fejleszton kivul nem sokan fogjak modositani/javitani. (job security FTW?)
De ezek _szelsoseges_ esetek. A legtobb programozónak nem kell leimplementalnia az strcpy-t ugy, hogy a leheto legoptimalisabb legyen, mert nem fogjak annyiszor hasznalni. (Singleton patternbol sem kell rogton a DoubleCheckedSingleton-t implementalni)
Ha megiscsak szukseg lenne ra, hogy gyorsabb legyen a kod, akkor a refactor + kodoptimalizalas nincsen megtiltva, A tesztek garantalni fogjak, hogy ne rontsa el a mar meglevo viselkedest.
Ugy velem, hogy a kodoptimalizalas az utolso lepes a fejlesztesben (aka "Make it work. Make it right. Make it fast" - Kent Beck)
A CC nem csak szabalyokbol all, hanem szepen felepitett magyarazatokbol is.
Tenyleg ajanlom, hogy olvassatok bele, mert a sajat boromon tapasztalom, hogy mekkora problema, ha ezeket a tanacsokat mellozik a fejlesztok.
utoszo:
Fejlesztettem egy "AI"-t (agent-et) egy jatekhoz, es par honap piheno utan, mikor visszatertem hozza, el kellett dobnom az egeszet, mert nem tudtam kiboviteni. (ennyi ido alatt elfelejtettem, hogy mit es mit nem csinal)
Ujrairtam az egeszet par nap alatt TDD-ben. Megint eltelt par honap, es nem volt problema a bovitessel, mert egyaltalan nem kellett foglalkoznom azzal, hogy "mit ronthatok el". Minden okozott hibat azonnal jeleztek a tesztjeim.
Atstrukturaltam a kodot, es odaig jutottam, hogy egy-egy uj viselkedesi minta (feature) mar nem ronthatja el a tobbi, mar definialt viselkedest.
---
Lambda calculus puts the fun into functional programming