![]() | |||
Joel on Software Joel, szoftverekről
| |||
|
További "Joel on Software" cikkek magyar nyelven További "Joel on Software" cikkek angol nyelven |
Szerző: Joel Spolsky Fordította: Plesz Gábor Szerkesztette: Krisztián Gyuris 23.1.2002 Egy ok, ami arra csábít, hogy a teljes kódot a kezdetektől újraírd, az az, hogy az eredeti kódot nem arra tervezted, ahogy most működik. Mondjuk prototípusnak, tanulmánynak, kísérletnek, hogy a nullától eljuss a tökéletesig 9 hónap alatt vagy csak egyszeri demónak. És most már egy nagy zűrzavarrá nőtte ki magát, ami törékeny és lehetetlen bővíteni új kóddal, és mindenki nyűgös, és a régi programozók kétségbeesésbe menekülnek, és az új, akit felvettél nem tudja megkülönböztetni a kód fejét a farkától, így valahogy meggyőzöd a vezetést, hogy felállni és gyerünk kezdjük elölről, mert a Microsoft átveszi a piaci pozíciódat. Ma hadd mondjak el egy történetet arról, mit kell ez helyett tenni. FogBUGZ úgy indult hat évvel ezelőtt, hogy megpróbálom megtanulni az ASP-t. Kicsivel később ő lett a házon belüli hibakövető rendszerünk. Szinte naponta adtunk hozzá olyan új tulajdonságokat, amikre szükség volt, egészen addig, amíg elég jó lett ahhoz, hogy ne kelljen rajta tovább dolgozni. Sok ismerősöm kérdezte, hogy használhatná-e a FogBUGZ-t a saját cégénél. A probléma az volt, hogy túl sok fixen belekódolt dolog volt benne, így kemény munka lett volna máshol futtatni, mint azon az egy gépen, ahol telepítve lett. Használnom kellett egy csomó SQL tárolt eljárást, ami azt jelentette, hogy SQL szerverre is szükség van a FogBUGZ futtatásához, ami drága, és kilőtte a kétfős csapatokat, akik használni akarták. És így tovább. Így aztán mondtam a barátaimnak, “ejnye, 5000 dolláros tanácsadási díjért rászánok néhány napot és kitisztítom a kódot, így használható lesz SQL helyett Access-szel is.” Általában az ismerőseim túl drágának tartották. Miután ez párszor megtörtént, felfedeztem - ha ugyanezt a programot meg kellene vennem, három emberre fejenként 2000 dollárba kerülne, és utána derülne ki, hogy milyen. Vagy 30 emberre 200 dollárba fejenként. Szoftver, ami közel olyan mint ez. Így aztán 2000 végén Michael leült, és portolta a kódot, így működött Access-szel és SQL-lel, minden site-specifikus kódot header állományba tett, és elkezdtük árulni a dolgot. Én nem vártam tőle túl sokat. Napjainkban, gondolom, kismillió hibakövető rendszer létezik. Minden programozó megírja a saját kis hibakövető rendszer. Miért venne bárki is meg a miénket? Egy dolgot tudok: a programozók, akik a saját céget indítanak nagyon gyakran arra a rossz következtetésre jutnak, hogy hozzájuk hasonlóan mindeki más is programozó és ugyanazt akarják, amit ők, és ezért van ez a halva született ötletük, hogy programozási eszközöket gyártó vállalkozást indítsanak. Ez az, amiért annyi vézna cég házal forráskód-generáló ügyefogyottsággal, hibacsapdával és e-mail bénázással, hibakereső programocskával, szintakszis színezéses szerkesztő izével, ftp-ző cuccal, és ráadásul hibakövető rendszerrel. Minden ilyet csak a saját programozója szeret. Nincs kedvem ilyen csapdába esni! Általában semmi sem úgy történik, ahogy eltervezted. A FogBUGZ népszerű. Igazán népszerű. Egy meglehetős darabot könyvelhet el magának a Fog Creek éves beszámolójában és az értékesítés volumene szilárdan emelkedik. Az emberek nem akarják abbahagyni a vásárlást. Így megcsináltuk a 2.0-s verziót. Megpróbáltunk néhány nyilvánvalóan fontos tulajdonságot hozzá adni a rendszerhez. Amíg David dolgozott a 2.0-s verzión, mi tényleg nem gondoltunk arra, hogy megéri ezt a sok erőfeszítést, így aztán hajlamos volt a dolgokat “célszerűen” lekódolni, mintsem “elegánsan”. Bizonyos, khm., tervezési hibák ötvöződtek az eredeti kódban. Itt van például két teljes halmaza közel azonos kódoknak a fő hiba-szerkesztő oldalhoz. SQL utasítások mindenhol elszórva a HTML-ben itt is-ott is, kicsik és nagyok, mindenhol. A HTML-ünk recseg ropog, és olyan böngészőkhöz terveztük, amik egy about:blank betöltés során összeomlanak. Jeeeee, brilliánsan működik, eddig nulla darab hibáról tudtunk. De belül a kód, hogy egy technikai kifejezést használjak, egy “nagy zűrzavar.” Új tulajdonságok hozzáadása egyszerűen kihozza az aranyered. Egy mezőnek a hozzáadása a központi hibatáblához valószínűleg 50 módosítást jelent, és még azután is fogsz találni helyeket, amiket elfelejtettél módosítani, miután megvetted az első családi rakéta autódat azokra a hétvégi kirruccanásokra a marsi víkend házadhoz. Egy nagyobb cégnél, amit mondjuk egy expressz-csomagoló-és-szállító üzletből érkezett ügyvezető irányít, talán úgy dönt, hogy kidobja a kódot és újrakezdi. Említettem már, hogy miért nem hiszek a teljes újraírásban? Arra tippelek, hogy már beszéltem erről. Bárhogyan is legyen, a kód teljes újraírása helyett úgy döntöttem, hogy rászánok három hetet az életemből, és teljesen kisikálom a kódot. Subi-dubi-dú. A refactoring szellemében néhány szabályt állítottam fel ehhez a gyakorlathoz.
Végigmentem minden forrás állományon, egyszerre mindig csak eggyen, az elejétől a végéig, végignéztem a kódot, azon gondolkozva, hogyan tudnám jobban szervezni, és nagyon egyszerű változtatásokat végeztem rajta. Itt van néhány tipikus változtatás, amit a három hét során elvégeztem.
A három hét során a kód belül egyre jobb lett. A végfelhasználók felé nem sok változás történt. Néhány betűtípus a CSS-nek köszönhetően egy kicsit szebb lett. Bármikor meg tudtam volna állni, mivel minden adott pillanatban 100%-osan működő kódom volt (és minden verziót feltöltöttem a saját élő FogBUGZ szerverünkre, hogy biztos lehessek benne). És az is tény, hogy soha sem kellett erősen gondolkoznom, és megterveznem a dolgokat, mivel egyszerű logikai transzformációkat végeztem. Időnként találkoztam hátborzongató kóddarabbal. Ezek általában hibajavítások voltak, amiket az évek során elvégeztünk. Szerencsére a hibajavításokat sértetlenül meg tudtam tartani. Az esetek nagy többségében arra ébredtem rá, ha újra kezdtem volna a nulláról, ugyanazokat a hibákat elkövettem volna, és hónapokig vagy évekig észrevétlenül maradtak volna. Alapjában véve már készen is vagyok. Ahogy terveztem három hét alatt elkészültem. Szinte minden sor megváltozott. Igen, végignéztem minden sorát a kódnak, és a legtöbbet megváltoztattam. A felépítés teljesen megváltozott. Minden hibakövető funkcionalitás teljesen elvált a HTML felhasználói felülettől. Itt van a kódsikáló tevékenységem összes előnye:
Az irodalom nagy része Martin Fowler-nek tulajdonítható, annak ellenére természetesen, hogy kódtisztítás elve már évek óta jól ismert a programozó körében. Érdekes új terület a refaktoring eszközök területe, ami csak egy jól hangzó név olyan programoknak, amik ezeknek a dolgoknak egy részét automatikusan elvégzik. Messze vagyunk még attól, hogy minden jó eszközünk meglegyen, amire szükségünk van - a legtöbb programfejlesztő környezetben egy olyan egyszerű transzformációt sem tudsz elvégezni, mint a változó nevének a megváltoztatása (és minden erre történő hivatkozás automatikus megváltoztatása). De egyre jobbak, és ha tényleg valamiféle programzó francot akarsz létrehozni vagy jót akarsz tenni az open-source közösséggel, akkor az ajtó nyitva áll. A fordítás alapjául szolgáló angol cikk címe: Rub a dub dub | ||
![]() Joel Spolsky a Fog Creek Software alapítója. A Fog Creek egy apró szoftvercég, székhelye New York City. Joel a Yale egyetemen végzett, majd programozóként és menedzserként dolgozott a Microsoftnál, a Viacomnál és a Junonál. | |||
Az itt olvasható oldalak egyetlen személy véleményét tükrözik.
Minden itt megjelenő tartalom ©1999-2005 Joel Spolsky. Minden jog fenntartva.