[[oktatas:programozás|< Programozás]] ====== Kódolási konvenciók ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2014 * Licenc: GNU Free Documentation License 1.3 * Web: http://szit.hu ===== Bevezetés ===== A kódolási konvenciók a hatékony szoftverfejlesztés sarokkövei. Egységes stílus nélkül a munkánk nagy része keresgéléssel telik. A következő három program. Első pillantásra talán más, más programnak tűnik. A három program egy és ugyanaz: class Haromszog { public static double terulet(double alap, double magassag) { return alap * magassag / 2; } public static void main(String[] args) { System.out.println(terulet(30, 35)); } } class Haromszog { public static double terulet(double alap, double magassag) { return alap * magassag / 2; } public static void main(String[] args) { System.out.println(terulet(30, 35)); } } class Haromszog { public static double terulet(double alap, double magassag) {return alap * magassag / 2;} public static void main(String[] args) {System.out.println(terulet(30, 35));} } Az olvashatóságot ronthatják az elnevezési szokások is. vajon mit csinál a következő program?: class H { public static double t(double a,double b) { return a*b/2; } public static void main(String[] args) { System.out.println(t(30,35)); } } Ilyen kis programoknál természetesen nincs nagy gond. Nagyobb programok esetén fáradtságos munkába kerülhet a visszakövetés. ===== Mit szokás meghatározni? ===== Mit szokás meghatározni a kódolási konvenciókban? Fájlok formázása behúzásokkal, a programozás azonosítóinak elnevezései. A következő listában a gyakran használt meghatározásokat látjuk: * fájlok formázása * fájlok kezdése, befejezése * behúzások - tabulátor vagy szóköz * sorvége jelek - LF vagy CR/LF * fájlok elnevezése * osztályok elnevezése * interfészek elnevezése * metódusok elnevezése * változónevek * állandók nevei ===== Kisbetű-nagybetű stílusok ===== Több szóból álló azonosítók írása. * **PascalCase** vagy CamelCase vagy **UpperCamelCase**- minden tag nagybetűvel kezdődik * **camelCase** vagy Mixed case vagy lowerCamelCase - az első kicsit, a következő tagok kezdőbetűje nagy * **Snake_case** vagy underscore_case * spinal-case vagy kebab-case * StUdLyCaPs - kevert * Sentence case - első nagybetű * Title case vagy hadline - első betű nagy ha lényeges (főcím) - Oxford Manual of Style * UPPER CASE - nagybetűs * lower case - kisbetűs * tOGGLE cASE - első betűk kicsi Vannak leírások, ahol a camelCase nagybetűvel kezdik: CamelCase és ennek megfelelően nagy kezdőbetűt jelöl az elején, vagyis CamelCase == PascalCase. Ilyenkor ajánlott megkülönböztetni az első karakter kis vagy nagy kezdőbetűs írását: * UpperCamelCase * lowerCamelCase ===== Elnevezési stílusok ===== ==== Magyar stílus ==== A magyar stílust **Charles Simonyi** után nevezik magyar stílusnak, származása alapján. Apja Simonyi Károly, fizikus, tudós, tanár és mérnök. Angolul Hungarian notation, németül ungarische Notation. A használata a C nyelvhez kötődik, mivel ott használták elsőként. * rendszer magyar * változóban tárolandó típus jelezzük egy vagy több betűvel, annak nevében, prefixként * dHomerseklet - double * iSzamlalo - int * lSzamlalo - long * fSzam - float * strNev - string * szNev - \0-val zárt string * pFile - mutató * dbPi - double * alkalmazói magyar * a változó felhasználásának területét jelezzük egy vagy több betűvel, annak nevében prefixként * ideiglenesTarolo * ujNev * regiNev C és C++ nyelvekben szokás. ===== Ajánlás ===== * OsztályNévPascalCase * metódusNévCamalCase * változó_underscore * KONSTANS_NAGYBETUS ===== Kódolási stílusok ===== ==== Megjegyzések ==== Ne legyenek felesleges megjegyzések. A jól megírt kód elég beszédes. Minden állomány elején legyen egy állományleíró rész. Az utasítások után tehetünk egy soros megjegyzéseket. /* * Lépésszámláló program * Verzió: 0.1 * 2014-10-21 * Copyright (c) Nagy József, 2014 * Licenc: GNU/GPL * / ==== Sorhossz ==== A hosszú sorokat tördeljük. Mi számít hosszú sornak? A 80 karakternél hosszabb sorok túl hosszúnak számítanak. Néhány fejlesztői környezet mutatja ennek határát. System.out.printf( "A haromszog terulete: %.2f\n", (haromszogAlap * haromszogMagassag)/2 ); if ( bekertSzin == "piros" || bekertSzin == "zöld" || bekertSzin == "kék" || bekertSzin == "fehér"){ //... } ==== Blokk nyitó és záró szimbólumok ==== A C alapú nyelvekben a blokk nyitó és záró szimbólumok a kapcsos zárójelek. Van néhány stílus, amelynek már neve is van. K&R stílus if(feltétel) { //utasítás } GNU stílus: if(feltétel) { //utasítás } BSD stílus: if(feltétel) { //utasítás } ==== Else ág ==== if (feltétel) { } else { } if (feltétel) { } else { } if (feltétel) { } else { } if (feltétel) { } else { } ==== Pascal alapú nyelvekben ==== A pascal nyelvben is ezek a megoldások variálhatók: if feltétel then begin utasítások; end; if feltétel then begin utasítások; end; if feltétel then begin utasítások; end; while feltétel do utasítások; end; ===== Behúzás ===== A blokkokhoz tartozó utasításokat behúzással beljebb írjuk a jobb átláthatóság érdekében: main() { utasítás1; utasítás2; utasítás3; utasítás4; if(feltétel) { utasítás5; utasítás6; utasítás7; utasítás8; utasítás9; } utasítás10; utasítás11; utasítás12; } ===== Függelék ===== ==== Elnevezés ==== Grafikus felületek esetén érdemes végiggondolni, hogyan nevezzük el nyomógombjainkat, és más komponenseinket. Variációk kilépésgombra: * buttonExit * exitButton * butExit * btnExit * gombKilep Beviteli mezők: * textSzam * szamText * txtSzam