**Ez a dokumentum egy előző változata!** ----
====== Általános ====== * A forráskódban szereplő sorok hossza legfeljebb **120** karakter lehet. Ha kell, sortörést mindig operátor után iktatunk be. * Kikényszeríti a túl mély szerkezetek kikerülését. Ha elértünk 3-4 indentálási mélységet, akkor fontoljuk meg egy új függvény vagy metódus bevezetését inkább. * Forráskódban használjunk angol nyelvet. * Behúzás tab karakterrel történik, nem space karakterrel. * Alapértelmezetten egy tab karakter 4 space karakternek felel meg, de mindenki kedve szerint beállíthatja. * A behúzás szintjei mindig egy tab karakterrel nőnek. * Láthatóság mindig az engedékenytől halad a szigorú felé: public -> protected -> private. * Mágikus számokat mellőzzük a 0 és az 1 kivételéve. Konstansként adjuk meg. <code>const int MAX_SPEED = 250</code> * Lebegő pontos számokat mindig ponttal adjuk meg, a pont előtt mindig álljon számjegy. <code>double num = 0.5 double size = 4.0</code> ====== Névadás ====== * **Az angol nyelv használandó.** * Kerüljük a felesleges rövidítéseket, használjunk beszédes változóneveket. * src -> source, file -> outputFile. * A rövidítések szónak számítanak, így adott esetben csak a kezdő betűjük írandó naggyal. <code>ip, sql, sourceIp, htmlCode</code> ===== Változók, függvények, metódusok ===== * Változók, függvények nevei a camelCase formátumot kövessék. * Használjunk getter, setter függvényeket. * Csak az legyen publikus láthatóságú ami feltétlenül szükséges. <code>getAddress(), isEmpty(), minHour</code> ===== Osztályok, névterek ===== * Osztályok, névterek a CamelCase formátumot kövessék. * A névtéren belül az osztályt nem kell behúzással elkülöníteni, a névtér végét kommentezéssel kell ellátni. <code>HourClock, TimeMachine</code> <code>namespace CharactersList { ... } // namespace CharactersList</code> ===== Konstansok ===== Konstansok nevei mind nagybetűvel, és aláhúzás jellel elválasztva írandók. <code>GRAVITY, SPEED_LIMIT</code> ====== Vezérlési szerkezetek ====== * Az egysoros utasítás blokkoknak is nyissunk zárójeleket. * Egy sorba csak egy utasítás kerüljön. * Végtelen ciklust a **while (true)** formában használjuk. ====== Forrásfájlok ====== * **Minden fájlba csak egy, a vele megegyező nevű osztály kerülhet.** * A fájl neve meg kell egyezzen az osztály nevével, a kis- és nagybetűk is számítanak. * Az include direktívák sorrendjét úgy válasszuk meg, hogy a header fájlok között a speciálistól haladjunk az általános felé. * Saját header fájlok -> programkönyvtár header fájlok -> rendszer header fájlok. * Minden header legyen ellátva header guard bejegyzéssel. * A header guard végét kommentezéssel kell ellátni. <code>#ifndef CHARACTER_H #define CHARACTER_H ... #endif // ifndef CHARACTER</code> ====== Formázás ====== Ha egy sor túl hosszú, meghaladja a 120 karakteret, tördelni kell. A törés mindig úgy történjen, hogy **az operátor a sor végére kerüljön**. <code cpp-qt> if(!((windowSize.height() <= screenSize.height()) && isWindowSizeHeightPositive) || !((windowSize.width() <= screenSize.width()) && isWindowSizeWidthPositive)) { resize(QSize(450, 200)); } else { resize(windowSize); } </code> If szerkezeteknél, ha csak egyetlen if van, a kapcsos zárójel a következő sorban kezdődik. Amennyiben if/else ágról van szó, a kapcsos zárójel az if-el azonos sorba kerül. Ciklusoknál a kapcsos zárójel mindig a következő sorba kerül. <code cpp> if (isEmpty()) { cout << "Empty"; } </code> <code cpp> if (isEmpty()) { cout << "Empty"; } else { cout << "Not empty"; } </code>