Kódtervezés minek van?
Szoftverfejlesztéssel töltött 16 évemben többször szembesültem azzal a ténnyel, hogy egyes programozók elfelejtik megtervezni a kódot. Vagy nem is akarják, mert ahogy Webisztános HH egyszer mondta:
szerencsere ma mar nem kell eldontenunk programozas megkezdese elott h egeszen pontosan mire is fogjuk hasznalni az adott szoftvert a jovoben. [...] a folyamatos, interativ fejlesztes korat eljuk. nem a dobozos szoftvereket.
http://geeklany.wpress.hu/2010/04/behalozott-fozocskezes/
Kis csapatoknál nem is annyira életképtelen ötlet: nagyjából tudjuk, hogy mit akarunk, összedobjuk a kódot és menet közben végezzük el a refactoringot.
Nagyobb csapatoknál gyakrabban fordul elő a "nem tudja a jobb kéz, mit csinál a bal" effektus. Emberek jönnek, mennek, kevesen maradnak, ha maradnak egyáltalán, akik átlátják a kódot. A tapasztalati szint is széles skálán mozog. Refactoringra csak akkor van lehetőség, ha azt megtervezzük és a projektfejlesztési menetbe beillesztjük.
Konkrétan a mi projektünkben pár alkalommal a táblázatban megjelentetett adatokat CSV file-ba kell exportálni. Nehezítésül a látható oszlopok listája és az exportálandó oszlopok listája nem fedi egymást teljesen.
Gyakorlott programozó ebben egy általános osztály megvalósításának lehetőségét látja, ahol egyfelől megadom a szűretlen adatokat, másfelől az exportálandó mezők listáját, majd ezeket egy egységes kódban (filenév választással stb.) exportálom.
Kevésbé gyakorlott programozó megcsinálja egyszer, az adott feladatra tökéletesen elkészítve, majd fél évvel később a másik, szintén kevésbé gyakorlott programozó lemásolja, átalakítja az új (változott) követelményeknek megfelelően.
Végeredményben lesz 5 Java osztályunk, ami ugyanazt csinálja, csak mindig kicsit másképp. A konszolidációs javaslatunkra tett válasz pedig kimerül a "mindegyik egy kicsit más, nem lehet közös nevezőre hozni" válaszban.
Hogyan másképp?
Ennek elkerülésére találták ki a különböző rendszerszervezéssel foglalkozó könyvek, hogy a program egészének tervezése több lépcsőben zajlik.
- Funkcionális követelmény
- Architektúra
- Kódterv
- Kód
Minden szinten van egy személy, aki az adott szinten átlátja a komplett rendszert.
Optimális esetben nem fordul elő az, hogy két funkcionális követelmény ugyanazt a részt módosítja egy releaseben kétféleképpen. Ha mégis, akkor ennek legkésőbb az architektúra szintjén ki kell derülnie.
Az architekt (avagy építész a Mátrix filmek kedvelőinek) nagyvonalúan foglalkozik a technikai megvalósítással. Tudja, hogy az adott követelményeket mely modul(ok)ban kell megvalósítani, milyen jellegű fejlesztéseket kell végrehajtani és ehhez milyen - esetleges - harmadik cég által készített frameworköt kell használni.
Azt is illik tudnia, ha valamelyik feature-t már megvalósították és a dokumentumban javasolja (igényli) az egységesítést.
A kódtervet (pl. UML) már a fejlesztői szinten készítik el. Legkésőbb itt kell eldönteni, hogy egy meglévő funkciót kell-e általánosítani, illetve mennyire kell általánossá tenni egy új funkciót. Néha semennyire - nem kell túllihegni az egész témát.
A kód szinte szolgai megvalósítása a kódtervnek, ámbár ez sem igaz, hiszen a kódernek tisztában kell lennie a nyelv lehetőségeivel, határaival. Egy művész itt tudja magát igazán kiélni és készít agyonoptimalizált ámde olvashatatlan, avagy gyönyörűen olvasható kódot.
Az egyes szintek között természetesen elengedhetetlen a kölcsönös párbeszéd, mert anélkül fejetlen fejsze elsüllyedt nyele az egész.


Miután az IBM elállt a vásárlástól, a SUN-t 7.4 milliárd dollárért felvásárolta az Oracle. Ezzel az Oracle tulajdonába került a Solaris és a Java az elsősorban webes fejlesztéseknél elterjedt adatbázisszerver, a MySQL is.


