Petrik tananyagtár: A kódolás technikai elvei Petrik Lajos Vegyipari, Környezetvédelmi és Informatikai Szakközépiskola Szoftverfejlesztő szak, 14. évfolyam, OKJ szám: 54 481 02 0010 54 04
___________________________________________________________________________
A KÓDOLÁS TECHNIKAI ELVEI 1.
2.
3. 3.1
A KÓDOLÁS FOGALMA ˗
A kódolás a forrásnyelvű (pl. C#, Java) program elkészítését jelenti.
˗
Ha a megoldást gondosan megterveztük, akkor ez általában már csak rutinszerű, technikai jellegű művelet.
˗
Ez persze csak akkor igaz, ha ismerjük az adott programozási nyelv szintaktikai szabályait.
A PROGRAMTERV ÉS A FORRÁSKÓD KAPCSOLATA ˗
A kódolás szigorúan a programterv, illetve az algoritmus alapján történjen!
˗
Kódolás közben soha ne változtassunk önkényesen az algoritmus egyes részein, ez súlyos hibák forrása lehet!
˗
Ha esetleg kódolás közben derül ki, hogy programterv hibás, akkor gondoljuk át újra a teljes algoritmust, adatszerkezetet, vagy objektumhierarchiát, majd ezután térjünk vissza a kódoláshoz.
˗
A forráskód az algoritmushoz képest általában lényegesen terjedelmesebb. Ez természetes, hiszen a programterv – ideális esetben – csak a megoldás vezérfonalát tartalmazza, a program logikája szempontjából másodlagos jelentőségű eljárásokat, programsorokat nem.
A FORRÁSKÓDDAL KAPCSOLATOS ELVÁRÁSOK Szintaktikailag hibátlan forráskód ˗
A programozási nyelvek szintaktikai szabályai meghatározzák, hogy az adott nyelvben milyen o kulcsszavak o struktúrák o azonosítók és o speciális szimbólumok alkalmazhatók. A különböző programozási nyelvek pontos szintaktikai szabályait a referenciakézikönyvek tartalmazzák.
˗
Ha az elkészített forráskód szintaktikai hibát tartalmaz, akkor a fordítóprogram nem tudja abból elkészíteni a futtatható programot.
˗
Ezért a programkóddal kapcsolatos legfontosabb elvárásunk az, hogy legyen szintaktikailag hibátlan.
˗
A programozói rendszerek fordítás előtt ellenőrzik a megírt programot, és csak kifogástalan forráskód esetén hajtják végre a fordítást.
1
Petrik tananyagtár: A kódolás technikai elvei Petrik Lajos Vegyipari, Környezetvédelmi és Informatikai Szakközépiskola Szoftverfejlesztő szak, 14. évfolyam, OKJ szám: 54 481 02 0010 54 04
___________________________________________________________________________ ˗
3.2
Általában már az első szintaktikai hibánál üzenetet kapunk, a hiba jellegének a meghatározásával.
A forráskóddal kapcsolatos további elvárások ˗
A kód legyen stuktúrált, tagolt, tömör, jól áttekinthető. Ezt a következő módszerekkel alkalmazásával érhetjük el: o Csak a szabályos struktúrákat (szekvencia, elágazás, ciklus) alkalmazzuk, kerüljük az ugrásokat. (Utóbbit a programozási nyelvek egy rész nem is támogatja.) o Kerüljük a redundanciát, az ismétlődő részeket ne kódoljuk többszörösen, írjunk ezekre metódust, függvényt! o Alkalmazzuk a bekezdéses leírást. A ciklusmagokat, ill. az elágazások ágait húzzuk egy tabulátorpozícióval beljebb. Így jól látható, hogy mit tartalmaz a ciklusmag, és jól megfigyelhetőek az egymásba ágyazott szerkezetek is. o Tördeljük a programsorokat! Ne írjunk egy sorba több utasítást. A nagyon hosszú logikai sorokat tördeljük több fizikai sorba. o Alkalmazzuk az „üres struktúrák” módszerét! Az eljárásokat, a ciklusokat és elágazásokat (ha lehetőségünk van rá) először üresen írjuk meg, majd utólag írjuk be az utasításokat. Így biztosan nem feledkezünk meg egy-egy struktúra lezárásáról. A tesztelésnél is hasznos lehet, hogy már akkor is szintaktikailag helyes a programunk, ha a sorok egy részét még nem kódoltuk.
˗
A tagolt, áttekinthető forráskód a legfontosabb biztosítéka a szintaktikai hibák elkerülésének, illetve a program karbantarthatóságának, továbbfejleszthetőségének.
˗
Alkalmazzunk „beszédes” azonosítókat! o Az osztályok, metódusok, változók neve ne egy-egy karakter, vagy érthetetlen rövidítés legyen! o Bátran használjunk hosszú, értelmes neveket, de kerüljük a túlzásokat!
˗
Döntsük el, hogy milyen nyelven programozunk! o Ha magyar nyelvű azonosítókat használunk, akkor legyünk ebben következetesek, ne keverjünk a programunkba angol elnevezéseket! o Csak akkor alkalmazzunk angol nyelvű azonosítókat, ha ehhez megfelelő nyelvtudással rendelkezünk.
2
Petrik tananyagtár: A kódolás technikai elvei Petrik Lajos Vegyipari, Környezetvédelmi és Informatikai Szakközépiskola Szoftverfejlesztő szak, 14. évfolyam, OKJ szám: 54 481 02 0010 54 04
___________________________________________________________________________
˗
Ne alkalmazzunk túlságosan egyéni stílust!
˗
o Általában minden programozási nyelvnek megvan a maga standard stílusa, melyet érdemes követni. Alkalmazzunk megjegyzéseket!
˗
o Néhány jellemző példa kommentek használatára fontos változók leírása metódusok tömör specifikációjára, a paraméterek magyarázatára bonyolult kódrészletek magyarázatára a figyelem felhívása a kód egy lényeges részletére, amely valószínűleg hibás o Egy jól megírt programot természetesen nem kell sorról-sorra magyarázatokkal teletűzdelni. o A beszédes azonosítók alkalmazásával a kommentek mennyiségét csökkenthetjük. Törekedjünk arra, hogy az elkészült programkód újra felhasználható legyen. o Lehetőleg komplett modulokat, objektumkönyvtárakat készítsünk.
3.3
A kódolási konvenció fogalma ˗
A kódolási konvenciók a programozók által alkalmazott olyan a kódolási szokások, amelyek alkalmazása növeli a program áttekinthetőségét, érthetőségét.
˗
Lehet olyan programkódot készíteni, amely szintaktikailag hibátlan, de nem követ semmiféle kódolási konvenciót. o Az ilyen programkód értelmezése sokkal nehezebb.
˗
A kódolási konvenciók alkalmazása feltétlenül szükséges, ha egy nagyobb programon, projekten több programozó dolgozik, és egymás kódját kell értelmezniük. illetve továbbfejleszteniük.
˗
A kódolási konvenciókat még abban az esetben is érdemes követni, ha a fejlesztő egyedül végzi a kódolást. o A konvenciók betartása a kód készítőjét is segíti a további fejlesztésben. o A kézikönyvek, illetve online programozói portálok példái biztos, hogy követik a szokásos konvenciókat.
3.3.1 Általános kódolási konvenciók. ˗
Vannak olyan kódolási szokások, amelyeket programozási nyelvtől függetlenül érdemes alkalmazni. o Elnevezési konvenciók
Alkalmazzunk beszédes azonosítókat!
A korszerű, 4GL programozói környezetek által automatikusan generált azonosítókat (pl. Textbox1) helyettesítsük saját elnevezéssel!
3
Petrik tananyagtár: A kódolás technikai elvei Petrik Lajos Vegyipari, Környezetvédelmi és Informatikai Szakközépiskola Szoftverfejlesztő szak, 14. évfolyam, OKJ szám: 54 481 02 0010 54 04
___________________________________________________________________________
Hasznos lehet a változó neve előtt néhány karakterrel utalni a változó típusára, pl. az előző példát folytatva: tbName. Ezt a kódolási konvenciót Charles Simonyi magyar származású programozó találta ki, akiről ezt Hungarian notation-nak, azaz magyar jelölésnek is nevezik.
o Tördelési konvenciók Egy fizikai sorba ne írjunk több logikai sort. A nagyon hosszú logikai sorokat tördeljük több fizikai sorba. Nem szerencsés, ha egy programsor vége a képernyőn nem látható. A hosszú sorok tördelését úgy oldjuk meg, hogy a kód áttekinthetősége emiatt ne romoljon. Pl. az áttördelt folytatást is húzzuk beljebb. Néha szerencsés sok részfeltételből álló összetett feltételeket úgy tördelni, hogy a részfeltételek egymás alá kerüljenek Nagyon hosszú műveletsor esetén is célszerű a műveleti jelek mentén tördelni a sort. Több azonos típusú változó, vagy adattag bevezetése esetén minden változót, illetve adattagot külön sorban vezessünk be, ne egy sorban soroljuk fel őket. Így jobban áttekinthető a bevezetett adatok száma Külön sorokban szükség esetén minden adatot kommenttel egészíthetünk ki. o Nyelvi konvenciók Mivel a programozási nyelvek kulcsszavai és azonosítói angol nyelvűek, ezért érdemes angol nyelvű változóneveket, metódusneveket alkalmazni. Így a kód sokkal egységesebb lesz, mint kevert nyelvű azonosítókkal. Nemzetközi munkacsoport esetében rendkívül zavaró, ha magyarul nem tudóknak olyan kódot kell értelmezniük, amelyben magyar azonosítók találhatók. Azt mindenképpen kerüljük el, hogy még az általunk bevezetett azonosítók esetében is keverjük a nyelvet! o Kommentelési konvenciók A komment legyen rövid, lényegre törő. Ha lehet, egysoros kommentet alkalmazzunk, közvetlenül a programsor után, tördelés nélkül. Olyasmit ne kommenteljünk, ami egyértelműen kikövetkeztethető a kódból. A kommenteket is lehetőleg angol nyelven fogalmazzuk meg. o Változók bevezetése A változókat lehetőleg mindig a blokk elején, együtt vezessük be Érdemes a deklarálással egyidejűleg kezdőértékkel is ellátni.
4
Petrik tananyagtár: A kódolás technikai elvei Petrik Lajos Vegyipari, Környezetvédelmi és Informatikai Szakközépiskola Szoftverfejlesztő szak, 14. évfolyam, OKJ szám: 54 481 02 0010 54 04
___________________________________________________________________________ 3.3.2
„Személyes” kódolási konvenciók ˗
˗
Vannak olyan kódolási szokások, amelyek lényegében a személyes ízléstől függenek. Például: o Egy ciklusmag kezdetét jelző kapcsos zárójelet tehetjük közvetlenül a ciklusfej sorába, vagy az azt követő sorba. o Logikai kifejezésekben alkalmazhatunk teljes zárójelezést akkor is, ha az adott nyelv ezt nem követeli meg. o A behúzások mértéke egyéntől függhet Lehet egy tabulátor pozíció, vagy akár csak egy-két szóköznyi. o Üres sorok beszúrásával tagolható a kód Az egyes metódusok, programegységek között az üres sorok javítják az áttekinthetőséget. Sok változó együttes deklarálása esetén üres sorokkal jól lehet csoportosítani a logikailag összetartozó változókat. A személyes konvenciók alkalmazása o Lényeges, hogy az ilyen személyes konvenciókat ne keverjük programon belül! o Csoportmunka esetében a többiekkel egyeztetni kell, és alkalmazkodni a többség szokásaihoz. o Ne alkalmazzunk túlságosan egyéni stílust! Általában minden programozási nyelvnek megvan a maga standard stílusa, melyet érdemes követni.
3.3.3 Programozási nyelvekhez kötődő kódolási konvenciók o Pl. a Java nyelv néhány konvenciója: Osztálynevek: főnevek nagy kezdőbetű, szóhatárokon is nagybetű Metódusnevek: igék kis kezdőbetű, szóhatárokon nagybetű Változónevek kis kezdőbetű, szóhatárokon nagybetű Konstansok neve csupa nagybetű, szóhatárokon aláhúzás jel Metódustörzs kezdetét jelző kapcsos zárójel közvetlenül a metódusfej után o Hasonló konvenciók megfogalmazhatóak a C# nyelvben is
5