Google C++ style guide

Hasonló dokumentumok
Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Bevezetés a programozásba Előadás: A const

Az alábbi példában a Foo f(5); konstruktor hívása után mennyi lesz f.b értéke? struct Foo { int a, b; Foo(int c):a(c*2),b(c*3) {} };

Osztályok. 4. gyakorlat

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

3. Osztályok II. Programozás II

OOP #14 (referencia-elv)

1) Hány byte-on tárol a C++ egy karaktert (char)? implementáció-függő ( viszont lásd 79. megjegyzés ) 1 8 4

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

0.2.1 Operátorok túlterhelése (műveletek definiálhatók felhaszn. típusokra) Kutya. Eb1. Eb2. Név (txt): Rex. Blöki. Német juhász 3

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Bevezetés a Python programozási nyelvbe

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Objektumok inicializálása

C++ programozási nyelv

Programozás II gyakorlat. 8. Operátor túlterhelés

Osztály és objektum fogalma

Programozás C++ -ban 2007/7

Programozás II. 4. Dr. Iványi Péter

C++ programozási nyelv Konstruktorok-destruktorok

JAVA PROGRAMOZÁS 2.ELŐADÁS

OOP: Java 8.Gy: Abstract osztályok, interfészek

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Programozás módszertan

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Programozás II gyakorlat. 4. Öröklődés

Programozás C++ -ban

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

C++ programozási nyelv

C++ programozási nyelv Struktúrák a C++ nyelvben

Java programozási nyelv 4. rész Osztályok II.

Java programozási nyelv 5. rész Osztályok III.

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Programozás II gyakorlat. 6. Polimorfizmus

Már megismert fogalmak áttekintése

ELTE SAP Excellence Center Oktatóanyag 1

Bevezetés a programozásba előadás: Öröklődés

500. AA Megoldó Alfréd AA 500.

Felhasználó által definiált adattípus

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Bevezetés, a C++ osztályok. Pere László

Programozás C++ -ban 2007/4

1. Bevezetés A C++ nem objektumorientált újdonságai 3

Web-technológia PHP-vel

4. Öröklődés. Programozás II

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg.

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Programozási alapismeretek 4.

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Interfészek. PPT 2007/2008 tavasz.

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások

C++ Gyakorlat jegyzet 12. óra

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

OOP és UML Áttekintés

C programozási nyelv

Abstract osztályok és interface-ek. 7-dik gyakorlat

500. CC Megoldó Alfréd CC 500.

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

OOP alapok Egy OOP nyelvet három fontos dolog jellemez. egységbezárás ( encapsulation objektumoknak öröklés ( inheritance

Pénzügyi algoritmusok

ISA szimulátor objektum-orientált modell (C++)

Java és web programozás

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

Forráskód formázási szabályok

Objektumorientált programozás C# nyelven

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Alkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus

Java és web programozás

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Programozás C és C++ -ban

5. Gyakorlat. struct diak {

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Öröklés és Polimorfizmus

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozási nyelvek II.: JAVA

Osztálytervezés és C++ implementációs ajánlások I.

Programozás módszertan p.1/46

- 1 - Konstansok használata. Döntsük el, van-e fordítási idejű hiba az alábbi programrészletekben! a) const char * str="zh"; str[0]++;

Programozás. Osztályok, Származtatott osztályok. Fodor Attila

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

C++ Gyakorlat jegyzet 7. óra

Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése

Java III. I I. Osztálydefiníció (Bevezetés)

Objektumelvű alkalmazások fejlesztése 6. gyakorlat. Öröklődés, polimorfizmus. Öröklődés Kódismétlődés objektum-orientált szerkezetben

Bevezetés a programozásba Előadás: Fordítási egység

ELTE SAP EXCELLENCE CENTER Oktatóanyag. Sas László: ABAP Objects Objektumorientált ABAP

Java III. I I. Osztálydefiníció (Bevezetés)

Objektumorientált szoftverfejlesztés alapjai

Cekla. Készítette Doxygen Tue Sep :13:44

Átírás:

Április 3, 2013

Tartalomjegyzék Amiről szó lesz... Header állományok Hatókör Osztályok Elnevezések

Előzmények Az útmutató célja A Google nyílt forrású projektjeinél túlnyomórészt C++: hatékony szolgáltatások, összetettség. A kód könnyen kezelhetetlenné vállhat. Cél: komplexitás kezelése, jól menedzselhető kód előállítása.

Előzmények Az útmutató célja A Google nyílt forrású projektjeinél túlnyomórészt C++: hatékony szolgáltatások, összetettség. A kód könnyen kezelhetetlenné vállhat. Cél: komplexitás kezelése, jól menedzselhető kód előállítása.

Előzmények Az útmutató célja A Google nyílt forrású projektjeinél túlnyomórészt C++: hatékony szolgáltatások, összetettség. A kód könnyen kezelhetetlenné vállhat. Cél: komplexitás kezelése, jól menedzselhető kód előállítása.

Előzmények Az útmutató célja A Google nyílt forrású projektjeinél túlnyomórészt C++: hatékony szolgáltatások, összetettség. A kód könnyen kezelhetetlenné vállhat. Cél: komplexitás kezelése, jól menedzselhető kód előállítása.

Előzmények Az útmutató célja A Google nyílt forrású projektjeinél túlnyomórészt C++: hatékony szolgáltatások, összetettség. A kód könnyen kezelhetetlenné vállhat. Cél: komplexitás kezelése, jól menedzselhető kód előállítása.

Előzmények Hogyan? Nagyon fontos az olvashatóság, könnyen érthetőség, amit a következő módon érhetünk el: konzisztencia megkövetelése, egységes idiómák, minták használata, bizonyos "extrém" nyelvi lehetőségek korlátozott használata. Egyes esetekben indokolt lehet eltérni a megszokott mintáktól, de törekedni kell a szabályok betartására, hogy megőrizzük a kód következetességét.

Előzmények Hogyan? Nagyon fontos az olvashatóság, könnyen érthetőség, amit a következő módon érhetünk el: konzisztencia megkövetelése, egységes idiómák, minták használata, bizonyos "extrém" nyelvi lehetőségek korlátozott használata. Egyes esetekben indokolt lehet eltérni a megszokott mintáktól, de törekedni kell a szabályok betartására, hogy megőrizzük a kód következetességét.

Előzmények Hogyan? Nagyon fontos az olvashatóság, könnyen érthetőség, amit a következő módon érhetünk el: konzisztencia megkövetelése, egységes idiómák, minták használata, bizonyos "extrém" nyelvi lehetőségek korlátozott használata. Egyes esetekben indokolt lehet eltérni a megszokott mintáktól, de törekedni kell a szabályok betartására, hogy megőrizzük a kód következetességét.

Előzmények Hogyan? Nagyon fontos az olvashatóság, könnyen érthetőség, amit a következő módon érhetünk el: konzisztencia megkövetelése, egységes idiómák, minták használata, bizonyos "extrém" nyelvi lehetőségek korlátozott használata. Egyes esetekben indokolt lehet eltérni a megszokott mintáktól, de törekedni kell a szabályok betartására, hogy megőrizzük a kód következetességét.

Előzmények Hogyan? Nagyon fontos az olvashatóság, könnyen érthetőség, amit a következő módon érhetünk el: konzisztencia megkövetelése, egységes idiómák, minták használata, bizonyos "extrém" nyelvi lehetőségek korlátozott használata. Egyes esetekben indokolt lehet eltérni a megszokott mintáktól, de törekedni kell a szabályok betartására, hogy megőrizzük a kód következetességét.

Előzmények Hogyan? Nagyon fontos az olvashatóság, könnyen érthetőség, amit a következő módon érhetünk el: konzisztencia megkövetelése, egységes idiómák, minták használata, bizonyos "extrém" nyelvi lehetőségek korlátozott használata. Egyes esetekben indokolt lehet eltérni a megszokott mintáktól, de törekedni kell a szabályok betartására, hogy megőrizzük a kód következetességét.

Előzmények Egyéb tudnivaló Ez az útmutató nem C++ tutorial. Részletes leírás megtalálható interneten: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml

Előzmények Egyéb tudnivaló Ez az útmutató nem C++ tutorial. Részletes leírás megtalálható interneten: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml

Header állományok Header fájlok A legtöbb.cc fájlban van hivatkozás.h fájlokra. A header-ek megfelelő használata nagyban hozzájárul a könnyen érthető és jól olvasható kód előállításhoz.

Header állományok #define Guard Minden header fájlban el kell kerülni a többszörös beszúrás lehetőségét. Erre szolgálnak a #define guard-ok. A szimbólumok formátuma: <PROJECT>_<PATH>_<FILE>_ H_.

Header állományok #define Guard példa Példa: foo projekt, foo/src/bar/baz.h útvonal: # ifndef FOO_BAR_BAZ_H_ # define FOO_BAR_BAZ_H_... #endif // FOO_BAR_BAZ_H_

Header állományok Inline függvények Inline függvények Az inline kulcsszó esetén a fordító nem hoz létre függvényt, hanem a megadott kódot minden helyre bemásolja, ahol a látszólagos függvényt meghívjuk. Csak akkor használjunk inline függvényeket, ha azok elég kicsik (max. 10 sor).

Header állományok Inline függvények Vannak függvények, amelyeknél nagyon körültekintően kell eljárnunk: destruktorok, olyan függvények, amelyek tartalmaznak ciklust vagy switch-t Szükség esetén a komplexebb inline függvényeket elhelyezhetjük egy -inl.h utótaggal rendelkező.h fájlban.

Header állományok Inline függvények Vannak függvények, amelyeknél nagyon körültekintően kell eljárnunk: destruktorok, olyan függvények, amelyek tartalmaznak ciklust vagy switch-t Szükség esetén a komplexebb inline függvényeket elhelyezhetjük egy -inl.h utótaggal rendelkező.h fájlban.

Header állományok Függvény paraméter sorrend Egy függvény definiálásakor a paraméterek sorrendje: bemenetek, aztán kimenetek. Persze kivételek lehetnek (pl. egy paraméter kiemenet is és bemenet is).

Header állományok #include A projekt header fájljait a szülő jegyzékkel elgyütt kell megadni. pl. google-awesome-project/src/base/logging.h #include "base/logging.h"

Header állományok #include A projekt header fájljait a szülő jegyzékkel elgyütt kell megadni. pl. google-awesome-project/src/base/logging.h #include "base/logging.h"

Header állományok #include A dir/foo.cc vagy dir/foo_test.cc fájlban, ha elsősorban a dir2/foo2.h-t szeretnénk tesztelni, vagy implementálni, akkor az include-ok sorrendje a következő: 1 dir2/foo2.h 2 C könyvtárak 3 C++ könyvtárak 4 egyéb könyvtárak 5 a projekt többi.h fájlja

Header állományok #include # include "foo/ public/ fooserver.h" // Preferred location. # include <sys/types.h> # include <unistd.h> # include <hash_map > # include <vector > # include "base/basictypes.h" # include "base/commandlineflags.h" # include "foo/ public/bar.h"

Hatókörök Névterek Névtér A fordító a programban használt neveket különböző névtereken (namespace) tárolja. Egy névtérben lévő neveknek egyedieknek kell lenniük, azonban a különböző névtereken azonos néven is szerepelhetnek, azaz a névterek a láthatósági szabályokat teszik könnyebben alkalmazhatóvá. Egy névtérben logikailag összefüggő változókat, függvényeket, típusokat tárolunk. Egy osztály/struktúra egyben a nevével azonos nevű névteret is definiál.

Hatókörök Névterek Névterek elnevezésekor vegyük alapul a projekt nevét és esetleg az útvonalát. Például két különböző projektünk is tartalmaz egy Foo osztályt a globális hatókörben. Ekkor: project1::foo és project2::foo különböznek, nincs ütközés. Lehetőség szerint kerüljük a globális függvények használatát. Helyette helyezzük el őket egy névtérben, vagy használjunk statikus tagfüggvényeket.

Hatókörök Névterek Névterek elnevezésekor vegyük alapul a projekt nevét és esetleg az útvonalát. Például két különböző projektünk is tartalmaz egy Foo osztályt a globális hatókörben. Ekkor: project1::foo és project2::foo különböznek, nincs ütközés. Lehetőség szerint kerüljük a globális függvények használatát. Helyette helyezzük el őket egy névtérben, vagy használjunk statikus tagfüggvényeket.

Hatókörök Lokális változók A függvények változóit a lehető legszűkebb hatókörben helyezzük el, és inicializáljuk őket a deklarációban. Példa: int i; i = f(); // Bad -- initialization separate from declaration. int j = g(); // Good -- declaration has initialization.

Hatókörök Lokális változók Ez alól egy kivétel van: ha ugyan is egy cikluson belül hozunk létre egy objektumot, akkor annak konstruktora minden egyes belépés után lefut. Példa: // Inefficient implementation : for (int i = 0; i < 1000000; ++i) { Foo f; // My ctor and dtor get called 1000000 times each. f. DoSomething(i); } Foo f; // My ctor and dtor get called once each. for (int i = 0; i < 1000000; ++i) { f. DoSomething(i); }

Osztályok Konstruktor A konstruktorban inicializálni szoktuk egy objektum adattagjait. Azonban óvakodnunk kell a komplex inicializációktól, melyek hibákat relythetnek magukban, mert a konstruktorok nagyon nehezen ellenőrizhetők. Konstruktorban sose hívjunk meg virtuális metódusokat. Ha egy objektum nem-triviális inicializációt igényel, akkor javasolt egy Init() metódus használata.

Osztályok Konstruktor A konstruktorban inicializálni szoktuk egy objektum adattagjait. Azonban óvakodnunk kell a komplex inicializációktól, melyek hibákat relythetnek magukban, mert a konstruktorok nagyon nehezen ellenőrizhetők. Konstruktorban sose hívjunk meg virtuális metódusokat. Ha egy objektum nem-triviális inicializációt igényel, akkor javasolt egy Init() metódus használata.

Osztályok Konstruktor Mindig hozzunk létre default konstruktort, máskülönben a fordító csinálja meg helyettünk, rosszul. Használjuk az explicit kulcsszót az egy paraméteres konstruktorok esetén, így elkerülhetjük a nemkívánatos konverziót.

Osztályok Konstruktor Mindig hozzunk létre default konstruktort, máskülönben a fordító csinálja meg helyettünk, rosszul. Használjuk az explicit kulcsszót az egy paraméteres konstruktorok esetén, így elkerülhetjük a nemkívánatos konverziót.

Osztályok Másoló konstruktor Csak ha feltétlen szükséges hozzunk létre másoló konstruktort, illetve hozzárendelő operátort. Ellenkező esetben "tiltsuk meg" a használatát (DISALLOW_COPY_AND_ASSIGN). Egy Clone(), CopyFrom() vagy hasonló metódussal biztosíthatjuk az objektumok másolhatóságát, elkerülve az implicit függvényhívásokat.

Osztályok Másoló konstruktor Példa DISALLOW_COPY_AND_ASSIGN makróra: // A macro to disallow the copy constructor and operator = functions // This should be used in the private: declarations for a class # define DISALLOW_COPY_AND_ASSIGN ( TypeName) \ TypeName(const TypeName&); \ void operator =( const TypeName&) Aztán a Foo osztályban: class Foo { public: Foo(int f); ~Foo(); private: DISALLOW_COPY_AND_ASSIGN (Foo); };

Osztályok Struktúra VS osztály Struktúrát (struct) legfeljebb csak passzív obejktumok esetén használjunk (adatok tárolása). Minden más esetben osztályt használjunk.

Osztályok Kompozíció VS öröklődés A kompozíció használata gyakran megfelelőbb, mint az öröklődés. Ha öröklődést használunk, akkor használjuk a public kulcsszót. Ne vigyük túlzásba az implementációs leszármaztatást. Legyen virtuális a destruktor, amennyiben szükséges. Ha már csak egy virtuális metódusunk is van, akkor mindenképp használjunk virtuális destruktort. Amikor felüldefiniálunk egy virtuális tagfüggvényt egy leszármazott osztályban, mindig írjuk a függvény neve elé a virtual kuécsszót, a könnyebb olvashatóság érdekében. Óvatosan kezeljük a többszörös öröklődést. Használatuk csak akkor megengedett, ha az ősosztályok közül legfeljebb csak egy tartalmaz implementációt, a többi csak pure interface lehet.

Osztályok Kompozíció VS öröklődés A kompozíció használata gyakran megfelelőbb, mint az öröklődés. Ha öröklődést használunk, akkor használjuk a public kulcsszót. Ne vigyük túlzásba az implementációs leszármaztatást. Legyen virtuális a destruktor, amennyiben szükséges. Ha már csak egy virtuális metódusunk is van, akkor mindenképp használjunk virtuális destruktort. Amikor felüldefiniálunk egy virtuális tagfüggvényt egy leszármazott osztályban, mindig írjuk a függvény neve elé a virtual kuécsszót, a könnyebb olvashatóság érdekében. Óvatosan kezeljük a többszörös öröklődést. Használatuk csak akkor megengedett, ha az ősosztályok közül legfeljebb csak egy tartalmaz implementációt, a többi csak pure interface lehet.

Osztályok Kompozíció VS öröklődés A kompozíció használata gyakran megfelelőbb, mint az öröklődés. Ha öröklődést használunk, akkor használjuk a public kulcsszót. Ne vigyük túlzásba az implementációs leszármaztatást. Legyen virtuális a destruktor, amennyiben szükséges. Ha már csak egy virtuális metódusunk is van, akkor mindenképp használjunk virtuális destruktort. Amikor felüldefiniálunk egy virtuális tagfüggvényt egy leszármazott osztályban, mindig írjuk a függvény neve elé a virtual kuécsszót, a könnyebb olvashatóság érdekében. Óvatosan kezeljük a többszörös öröklődést. Használatuk csak akkor megengedett, ha az ősosztályok közül legfeljebb csak egy tartalmaz implementációt, a többi csak pure interface lehet.

Osztályok Kompozíció VS öröklődés A kompozíció használata gyakran megfelelőbb, mint az öröklődés. Ha öröklődést használunk, akkor használjuk a public kulcsszót. Ne vigyük túlzásba az implementációs leszármaztatást. Legyen virtuális a destruktor, amennyiben szükséges. Ha már csak egy virtuális metódusunk is van, akkor mindenképp használjunk virtuális destruktort. Amikor felüldefiniálunk egy virtuális tagfüggvényt egy leszármazott osztályban, mindig írjuk a függvény neve elé a virtual kuécsszót, a könnyebb olvashatóság érdekében. Óvatosan kezeljük a többszörös öröklődést. Használatuk csak akkor megengedett, ha az ősosztályok közül legfeljebb csak egy tartalmaz implementációt, a többi csak pure interface lehet.

Osztályok Interface Egy osztály pure interface, ha: ha csak public pure virtual ("= 0") metódusai és statikus metódusai vannak, ha nincs nem-statikus adattagja, ha nincs szükség konstruktort létrehozni hozzá, de ha van is konstruktora, akkor nincs egyetlen paramétere sem, ha legfeljebb csak olyan szülő osztályai vannak, amelyekre ugyanezek igazak.

Osztályok Interface Egy osztály pure interface, ha: ha csak public pure virtual ("= 0") metódusai és statikus metódusai vannak, ha nincs nem-statikus adattagja, ha nincs szükség konstruktort létrehozni hozzá, de ha van is konstruktora, akkor nincs egyetlen paramétere sem, ha legfeljebb csak olyan szülő osztályai vannak, amelyekre ugyanezek igazak.

Osztályok Interface Egy osztály pure interface, ha: ha csak public pure virtual ("= 0") metódusai és statikus metódusai vannak, ha nincs nem-statikus adattagja, ha nincs szükség konstruktort létrehozni hozzá, de ha van is konstruktora, akkor nincs egyetlen paramétere sem, ha legfeljebb csak olyan szülő osztályai vannak, amelyekre ugyanezek igazak.

Osztályok Interface Egy osztály pure interface, ha: ha csak public pure virtual ("= 0") metódusai és statikus metódusai vannak, ha nincs nem-statikus adattagja, ha nincs szükség konstruktort létrehozni hozzá, de ha van is konstruktora, akkor nincs egyetlen paramétere sem, ha legfeljebb csak olyan szülő osztályai vannak, amelyekre ugyanezek igazak.

Osztályok Operátorok Ha csak lehet, kerüljük az operátor túlterhelést, különösen a hozzárendelés operátorét (operator=).

Elnevezések Fájlnevek A fájlneveknek végig kisbetűsnek kell lennie, tartalmazhat _ -t és - -t. A C++ fájlok kiterjesztése.cc, míg a header fájloké.h. Ne használjunk olyan fájlneveket, amelyek már léteznek a /usr/include-ban.

Elnevezések Fájlnevek A fájlneveknek végig kisbetűsnek kell lennie, tartalmazhat _ -t és - -t. A C++ fájlok kiterjesztése.cc, míg a header fájloké.h. Ne használjunk olyan fájlneveket, amelyek már léteznek a /usr/include-ban.

Elnevezések Fájlnevek A fájlneveknek végig kisbetűsnek kell lennie, tartalmazhat _ -t és - -t. A C++ fájlok kiterjesztése.cc, míg a header fájloké.h. Ne használjunk olyan fájlneveket, amelyek már léteznek a /usr/include-ban.

Elnevezések Típusnevek A típusok nagybetűvel kezdődnek, illetve minden egyes új szó is nagy betúvel kezdődik. Nincsenek - vagy _ -ok. class UrlTable {... class UrlTableTester {... struct UrlTableProperties {... // typedefs typedef hash_map <UrlTableProperties *, string > PropertiesMap; // enums enum UrlTableErrors {...

Elnevezések Változónevek A változók végig kisbetűsek, a szavakat _ -ok kapcsolják össze. Az osztály tagváltozói mindig _ -sal végződnek. string table_name_; // OK - underscore at end. string tablename_; // OK. Konstansoknál az első betű: k. pl. const int kdaysinaweek

Thank you for your attention!