Styl kodowania C++

Robert Nowak

październik 2004

Streszczenie

Dokument zawiera zalecenia dotyczące niektórych aspektów kodowania.

1 Pliki źródłowe

  1. Pliki źródłowe powinny mieć taką samą nazwę jak klasa lub funkcja znajdująca się w pliku. Wyjątki są dozwolone dla plików:
  2. Przyrostki:
  3. Powinna być tylko jedna definicja klasy na plik nagłówkowy ( dopuszcza się umieszczenie dodatkowych klas, wykorzystywanych przez tę klasę, lub tworzące wspólnie jedną całość ).
  4. Każdy plik źródłowy oraz nagłówkowy powinien rozpoczynać się blokiem komentarza zawierającym autora, datę utworzenia, datę ostatniej modyfikacji, oraz opis.
  5. Zaleca się poprzedzanie metod oraz funkcji przez blok komentarza zawierający: opis funkcji (metody), lista argumentów i ich opis, opis argumentu zwrotnego, zgłaszane wyjątki. Szczególnie dla metod publicznych.
  6. W plikach nagłówkowych nie mogą znajdować się definicje:
  7. Pliki nagłówkowe powinny zawierać kod zapobiegający mnożeniu egzemplarzy pliku. Dla przykładu, wszystkie dane w pliku nagłówkowym mogą być zamkniete za pomocą następujących dyrektyw preprocesora
    #ifndef MOJA_KLASA_H  
    #define MOJA_KLASA_H  
    ...  
    #endif

2 Konwencje w zakresie nazewnictwa

  1. Klasy, struktury, wyliczenia i nazwy definicji typów (typedef) powinny zaczynać się dużą literą, kolejne litery powinny być małymi. Jeżeli dla tworzenia nazwy klasy wykorzystywane jest wiele słów każde słowo powinno być rozpoczęte dużą literą.
  2. Funkcje, metody i składowe powinny rozpoczynać się małymi literami, kolejne litery również małymi. Jeżeli nazwa składa się z kilku słów, wszystkie kolejne słowa zaczynały się dużymi literami.
  3. Parametry funkcji oraz zmienne lokalne powinny rozpoczynać się małymi literami, kolejne litery również małymi. Jezeli nazwa składa się z kilku słów, słowa są rozdzielone podkreśleniami ’_’.
  4. Elementy wyliczeń oraz nazwy stałych powinny być pisane wyłącznie dużymi literami. Dozwolone jest rozdzielanie wyrazów podkreśleniami ’_’.
  5. Przykład:
    class MojaKlasa  
    {  
    public:  
        MojaKlasa();  
        ~MojaKlasa();  
        void funkcjaPierwsza(int parametr_pierwszy);  
    protected:  
        enum Kolor {BLACK, RED, GREEN, BLUE, WHITE };  
        Kolor kolor;  
    private:  
        static const int STALA = 3;  
    };

3 Formatowanie kodu źródłowego

  1. Dokonywać wcięcia o jeden poziom dla każdego nowego poziomu logicznego. Przykład:
    int Object::func( void )  
    {  
      for( ; ; )  
      {  
    if( wyr )  
        {  
          instr1;  
          instr2;  
          ...  
        }  
        instr3;  
        ...  
      }  
    }

4 Inne

  1. Należy unikać wartości numerycznych w kodzie, zamiast nich używać wartości symbolicznych. Przykład:
    const int MAXVALUE = 5 ;  
     
    for( int i = 0; i < MAXVALUE;  ++i )        // DOBRZE  
      ...  
     
    for( int i = 0; i < 5;  ++i )               // ŹLE  
      ...  

  2. Stałe definiować przy pomocy const a nie przy pomocy dyrektywy preprocesora #define.