';

C++ Coding Guidelines

C++ Coding Guidelines

C++ jest dość wymagającym językiem programowania. Choć daje programiście pełną kontrolę nad wieloma mechanizmami, np. alokacją/dealokacją pamięci, wielodziedziczeniem, rzutowaniem typów czy arytmetyką na wskaźnikach, to z tego też powodu podatny jest na programistyczne i architektoniczne błędy. Jak programować w C++, tak aby unikać defektów oprogramowania, a jednocześnie wykorzystywać jego zalety?

Z pomocą tutaj przychodzą wieloletnie doświadczenia i dobre praktyki zapisane w dokumentach o angielskiej nazwie Coding Guidelines. Zapoznanie się z poradami w nich zawartych oraz jak najczęstsze z nich korzystanie wspomaga nas – programistów – w codziennych pracach implementacyjnych i projektowych. W internecie – i na „rynku” w ogóle – dostępnych jest przynajmniej kilka wysokiej klasy dokumentów Coding Guidelines. Po krótce przyjrzymy się im z bliska i opiszemy różnice między nimi.

C++ Core Guidelines (LINK)

Dobre praktyki programowania w języku C++ autorstwa guru Bjarne’a Stroustrupa i Herba Suttera. Dokument dotyczy ogólnego przeznaczenia języka C++ i okaże się być przydatny każdemu programiście. Daje szerokie spektrum porad na tematy od koncepcji tworzenia oprogramowania, architektury i API, aż po szczegóły implementacyjne.

Dokument jest bardzo przejrzysty i dobrze ustrukturyzowany – każda z reguł posiada tytuł, wyjaśnienie oraz przykłady.
Jest to absolutnie pozycja obowiązkowa dla każdego dewelopera C++!

Cena: darmowe.

SEI CERT C++ Coding Guidelines (LINK)

Reguły i dobre praktyki programowania w języku C++ odwzorowujące obecne standardy i propozycje bezpiecznego (zarówno ang. secure, jak i ang. safe) kodowania.

Dokument skupia się przede wszystkim na problemach związanych z bezpieczeństwem oprogramowania, a przez to – ze szczegółami implementacyjnymi.

Pozycja obowiązkowa w projektach dotyczących rozwiązań sieciowych i serwerowych.

Cena: darmowe.

High Integrity C++ Coding Guidelines (LINK)

Jeden z najstarszych dokumentów typu Coding Guidelines, obecny na rynku od 2003 roku. W 2013 roku zaktualizowano dokument o reguły dotyczące najświeższych standardów C++. Za standard odpowiedzialna jest firma Perforce (poprzednio PRQA).

Reguły zawarte w dokumencie dotyczą ogólnego wykorzystania języka C++ – kodu wysokiej jakości, przenaszalnego i bezpiecznego (ang. safe). Największą zaletą tego standardu jest fakt, że za dokument odpowiedzialna jest ta sama firma, która tworzy też narzędzie do statycznej analizy kody. Dzięki temu w łatwy sposób zbadać możemy pokrycie reguł i dobrych praktyk przez napisany przez nas kod.

Cena: darmowe.

MISRA C++ Coding Guidelines (LINK)

Coding Guidelines dla systemów bezpiecznych (safe oraz secure) – zarówno wbudowanych, jak i pozostałych. MISRA to konsorcjum zrzeszające firmy produkujące pojazdy oraz komponenty do nich. Stąd też dokument ten popularny jest przede wszystkim (albo może i wyłącznie) we wspomnianym środowisku.
MISRA C++ nie jest już dokumentem aktualnym i zdecydowanie odradzam używania go, jeśli mamy inne możliwości. Jeśli jednak tworzymy oprogramowanie przeznaczone dla pojazdów, użycie standardu MISRA może okazać się obowiązkowe. Choć i tutaj prawdopodobnie użyjemy dokumentów dotyczących języka C, a nie C++.

Cena: 15 funtów + VAT (LINK).

AUTOSAR C++14 Coding Guidelines (LINK)

Dokument oparty o MISRA C++ Coding Guidelines, ale aktualizujący go o reguły dotyczące standardu czternastego C++. Dokument ponownie skupia się na zastosowaniu języka C++ w systemach bezpiecznych (safe, secure), wbudowanych i – co bardzo ważne – krytycznych.

W dokumencie znajdziemy wiele restrykcji, przede wszystkim dotyczących dynamicznej alokacji pamięci, używania mechanizmu wyjątków, rzutowania czy wielodziedziczenia.
Jest to bardzo ciekawa pozycja, szczególnie dla programistów pracujących nad systemami krytycznymi, czasu rzeczywistego.

A w samym dokumencie znajdziecie też sto-kilkadziesiąt wystąpień znanego wam imienia i nazwiska. Szukajcie w przykładach. 🙂

Cena: darmowe.

Powyżej wymieniłem najpopularniejsze standardy kodowania w języku C++. Zawierają one mnóstwo dobrych praktyk i reguł programistycznych, z których warto korzystać w codziennej pracy z oprogramowaniem.

Z dokumentów tych można też wiele się nauczyć. I bardzo polecam zapoznanie się z nimi, choćby powierzchowne.

PS. Narzędziom analizy statycznej poświęcimy oddzielny artykuł. Może w niedalekiej przyszłości. 🙂


Komentarzy
Udostępnij
Piotr Tański

Wszechstronny i doświadczony programista i projektant oprogramowania. Certyfikowany programista języka C, ekspert języka C++. Prywatnie - pasjonat nowoczesnych technologii i podróży. Zwiedził już wiele miejsc na świecie i ciągle mu mało! Poza tym, fan piłki nożnej, pieszych wycieczek i muzyki rockowej. Stara się też na bieżąco poszerzać wiedzę z historii.

Skomentuj

pl_PLPolski
en_GBEnglish (UK) pl_PLPolski