Formatowanie kodu w CPP

background image

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

background image

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

}

background image

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);

background image

Copyright © Magdalena Borys

2. Pliki

Pliki nagłówkowe powinny mieć rozszerzenie .h. Pliki źródłowe powinny mieć rozszerzenie .c++
(rekomenedowane) lub .cpp. Pliki nagłówkowe powinny zawierać jedynie deklaracje klasy,
natomiast pliki źró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 <fstream>

#include <iomanip>

#include <qt/qbutton.h>

#include <qt/qtextfield.h>

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

}

background image

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 wskaźnikó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.

background image

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++) {

doFunction1();

doFunction2();

}


for (int i = 0; i < nElements; i++)

{

doFunction1();

doFunction2();

}

W przypadku pojedynczych instrukcji dla pętli oraz warunków nie ma konieczności używania
nawiasów klamrowych.

if (isEnable)

doFunction1();

for (int i = 0; i < nElements; i++)

doFunction1();

background image

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();

}

background image

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:
Haskell format kodu
Haskell format kodu
cpp 2
Prezentacja formatka
Formaty plików dźwiękowych
F1 15 Tablica kodu ASCII
cpp z ccfd, pocpp lab7
Przekroje Format A2
Poprawki do kodu
h 1 formatka 2012 budowa hv
dane w pigulce 2 cpp
P3 PLAN KONSERWATORSKI (FORMAT 2000x2500)
Formatki do zaj z OC Cwiczenie Nieznany
Automatyczne formatowanie dokumentu, informatyka, grafika
Formatowanie(1), Edukacja, Informatyka
2013.09.17 FORMATKA RYSUNKOWA A4
format[1], Szkoła, Systemy Operacyjnie i sieci komputerowe, systemy, semestr I
Przenoszenie formatu z komórki na komórkę, excel

więcej podobnych podstron