[[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