Formatowanie kodu w C++
Na podstawie:
C++ Programming Style Guidelines, Version 4.9, January 2011, Geotechnical Software Services
http://geosoft.no/development/cppstyle.html
Głównym celem zaleceń jest poprawa czytelności, a tym samym
ułatwienie rozwijania i utrzymania kodu oraz zapewnienie ogólnej
jakości kodu.
Lublin, 2012
Copyright © Magdalena Borys
1. Nazewnictwo
a. Identyfikatory
Nazwy reprezentujące typy, klasy muszą być pisane zgodnie z formatem PascalCase - każdy wyraz,
z których składa się identyfikator, rozpoczynamy wielką literą.
Pracownik, SamochodOsobowy, KontoBankowe
Nazwy zmiennych muszą być pisane zgodnie z formatem camelCase - pierwszy wyraz będący częścią
identyfikatora piszemy małą literą, pozostałe rozpoczynamy wielką literą.
kierownik, fiat, kontoOszczednosciowe, kontoPremium
Nazwy stałych (w tym wartości typu wyliczeniowego) muszą być pisane wielkimi literami, kolejne
wyrazy, z których składa się identyfikator, oddzielamy znakiem podkreślenia dolnego.
MAX_LICZBA_ZNAKOW = 80;
Nazwy metod oraz funkcji muszą zawierać czasownik oraz muszą być pisane zgodnie z formatem
camelCase - pierwszy wyraz będący częścią identyfikatora piszemy małą literą, pozostałe
rozpoczynamy wielkÄ… literÄ….
obliczPoleFigury(), ustawWspolrzednePunktu(), pobierzPromien()
W przypadku kolekcji obiektów identyfikator powinien występować w liczbie mnogiej.
int wartosci[];
vector
punkty;
Prefix n powinien być wykorzystywany dla zmiennych wskazujących liczbę obiektów.
nPunktow, nOcen, nKolumn
Zmienne iteratorów pętli powinny być oznaczone identyfikatorami i, j, k, itd. Zmienne j, k, itd.
powinny być wykorzystywane jedynie w zagnieżdżonych pętlach.
for (int i = 0; i < nPunktow); i++) {
//tutaj operacje wykonywane w pętli
}
Formatowanie kodu w C++
Nazwy klas wyjątków powinny być zakończone przyrostkiem Exception.
class PolaczenieException
{
//tutaj atrybuty, metody klasy
}
Zmienne prywatne klasy powinien być zakończone podkreśleniem dolnym.
private:
float srednia_;
b. Język nazw
Wszystkie nazwy powinny być w tym samym języku, nazwy powinny być poprawne językowo. Nazwy
zmienny nie powinny mieć podwójnego znaczenia. Należy także unikat skrótów.
Preferowany jest język angielski jako język międzynarodowy programistów.
W przypadku wykorzystania języka angielskiego metody ustawiające/pobierające bezpośrednio
wartość atrybutu powinny mieć nazwy rozpoczynające się odpowiednio set/get.
student.getName();
student.setName(name);
matrix.getElement(2, 4);
matrix.setElement(2, 4, value);
W przypadku wykorzystania języka angielskiego dla zmiennych logicznych (boolean) oraz metod
zwracających wartość logiczną powinno być stosowane słowo kluczowe is.
isConnected, isEnable, isSet(), isFound()
W przypadku wykorzystania języka polskiego należy zastosować ujednoliconą konwencję dla całego
programu.
student.pobierzImie();
student.ustawImie(imie);
macierz.pobierzElement(2, 4);
macierz.ustawElement(2, 4, value);
Copyright © Magdalena Borys
2. Pliki
Pliki nagłówkowe powinny mieć rozszerzenie .h. Pliki zródłowe powinny mieć rozszerzenie .c++
(rekomenedowane) lub .cpp. Pliki nagłówkowe powinny zawierać jedynie deklaracje klasy,
natomiast pliki zródłowe ich definicje.
MyClass.h, MyClass.c++
Dyrektywy include muszą być umieszczone na początku pliku. W przypadku, gdy jest wiele dyrektyw
include powinny być one posortowane ze względu na ich pozycję w systemie na początku
umieszczamy pliki niskiego poziomu. Należy także zostawić pustą linię pomiędzy grupą dyrektyw.
#include
#include
#include
#include
Pliki nagłówkowe muszą zawierać strażnika dołączeń w postaci dyrektywy #ifndef & #define &
#endif.
#ifndef MODULE_CLASSNAME_H
#define MODULE_CLASSNAME_H
//tutaj kod
#endif // MODULE_CLASSNAME_H
3. Deklaracje
Poszczególne części klasy muszą być posortowane wg kolejności: public, protected, private.
Wszystkie części muszą być oznaczone w sposób jawny.
class MyClass {
public:
//tutaj atrybuty i metody publiczne
protected:
//tutaj atrybuty i metody chronione
private:
//tutaj atrybuty i metody prywatne
}
Formatowanie kodu w C++
Konwersja typów musi być zawsze wykonywana jawnie, aby było widoczne, że jest to celowe
działanie programisty.
floatValue = (float) intValue;
Wykorzystanie zmiennych globalnych powinno być zminimalizowane.
Zmienne (atrybuty) klasy nie powinny być deklarowane jako publiczne. Wynika to z paradygmatu
programowania obiektowego enkapsulacji oraz ukrywania informacji. Aby uzyskać dostęp do
zmiennych klasy należy utworzyć metody pozwalające na wykonywanie operacji na nich.
class MyClass {
public:
int getValue();
void setValue(int value);
protected:
//tutaj atrybuty i metody chronione
private:
int value_;
}
Symbole wskazników oraz referencji powinny być umieszczone przy ich typach, a nie przy ich
nazwach.
float* x;
int& sum;
Zmienne powinny być deklarowane w możliwie najmniejszym zakresie dostępu.
Pętle do-while powinny być unikane ze względu na mniejszą czytelność warunku pętli w kodzie.
Należy unikać stosowania instrukcji break oraz continue w pętlach.
Nie należy stosować instrukcji goto.
4. Formatowanie
a. Długość linii
Szerokość monitora jest ograniczona, więc tylko ograniczona liczba znaków w linii może być widoczna
dla programisty. Dlatego linia tekstu w kodzie powinna zawierać co najwyżej 80 znaków.
Copyright © Magdalena Borys
b. Układ
Zagnieżdżone elementy mają być wcięte o dwie spacje. Nie zależy stosować tabulacji do wcięć, gdyż
mogą być różnie reprezentowane przez środowiska programistyczne.
for (int i = 0; i < nElements; i++) {
doFunction1();
doFunction2();
}
Warunek pętli if powinien być w oddzielnej linii (ze względu na debugowanie programu).
if (isEnable)
doFunction1();
Pętla if z częścią else powinna być tak sformatowana, aby obie części było rozdzielone.
if (isEnable) {
doFunction1();
}
else {
doFunction2();
}
W pętlach oraz instrukcjach warunkowych nawiasy klamrowe dla bloków instrukcji muszą być
umieszczone wg jednego ze sposobów podanych poniżej. Należy stosować konsekwentnie wybrany
sposób umieszczania nawiasów klamrowych. (Nawias klamrowy zamykający blok musi być
umieszczony na tej samej głębokości wcięcia co słowo kluczowe for, while, if oraz else.
for (int i = 0; i < nElements; i++)
for (int i = 0; i < nElements; i++) {
{
doFunction1();
doFunction1();
doFunction2();
doFunction2();
}
}
W przypadku pojedynczych instrukcji dla pętli oraz warunków nie ma konieczności używania
nawiasów klamrowych.
if (isEnable) for (int i = 0; i < nElements; i++)
doFunction1(); doFunction1();
Formatowanie kodu w C++
Metody powinny mieć następującą formę.
int zwrocSume()
{
return suma;
}
Metody powinny być oddzielone trzema pustymi liniami.
Należy stosować spacje pomiędzy operatorami, po przecinkach, po średnikach w pętlo for, słowach
kluczowych jak: if, while, for, do, else, itd.
a = (a + b);
a *= c;
for (int i = 0; i < nElements; i++) {
doFunction1(a, b, c);
doFunction2();
}
Pętle powinny być następująco sformatowane.
for (int i = 0; i < nElements; i++) {
doFunction1();
doFunction2();
}
do {
doFunction1();
doFunction2();
} while (isActive);
while (isActive) {
doFunction1();
doFunction2();
}
Copyright © Magdalena Borys
Klasy powinny być następująco sformatowane.
class MyClass : public BaseClass {
public:
//tutaj atrybuty i metody publiczne
protected:
//tutaj atrybuty i metody chronione
private:
//tutaj atrybuty i metody prywatne
}
Bloki try-catch powinny być następująco sformatowane.
try {
//instrukcje
}
catch (Exception& exception) {
//instrukcje bloku catch
}
5. Komentarze
Wykorzystuj // do wszystkich komentarzy, nawet do komentowania wieloliniowego.
//To jest komentarz obejmujacy
//az dwie linie.
W przypadku używania zmiennych w j. angielskim komentarze również powinny być pisane w j.
angielskim. W przypadku tworzenia kodu w j. polskim nie należy wykorzystywać polskich znaków
specjalnych w komentarzach, gdyż przy zmianie środowiska programistycznego/operacyjnego znaki
te mogą być niepoprawnie zakodowane.
Wyszukiwarka
Podobne podstrony:
Fadal Format 2 (AC) B807 12
Lab cpp
Fadal Format 2 [MM] MW60 89
Fadal Format 2 [PEP] M116 89 1
CPP (2)
SGH Flasher Dumper v 07 dif format
Konwersja Filmów Z Płyt Dvd Do Formatu Divx
Fadal Format 2 [HM] MV16 89 1m
Fadal Format 2 [NW] D611 16 2m
cpp
Format js
formatwebct
borland cpp builder cw1
Fadal Format 1 [DM] M179 15 1
iCare Format Recovery naprawa systemu plikow
Fadal Format 2 LH [Co] MW66 12m
więcej podobnych podstron