Začíname s ROS! Časť štvrtá-Coding style

c++V predchádzajúcom článku sme si podrobne vysvetlili buildovacie systémy a význam catkinu v ROS a dnes sa pozrieme na ďalšiu, veľmi dôležitú tému pre začínajúcich vývojárov – programovací štýl. Ak ste úspešne zvládli úvodné kroky a pomaly začínate písať prvé aplikácie, otázku ako voliť názvy, či už premenných, funkcií, tried, packageov, prípadne ako odsadzovať riadky, kam umiestňovať zátvorky a podobné programovacie detaily musíte riešiť pomerne často. Programovací štýl ROS je presne zadefinovaný pre C++, Python aj Javascript, bohužial, väčšina začínajúcich programátorov to zistí, až keď má napísaných pár tisic riadkov kódu. Aby ste sa teda vyhli neskoršiemu pracnému prepisovaniu existujúcich zdrojákov do ROS štýlu, je užitočné osvojiť si zopár základných pravidiel už na začiatku.

Keďže väčšina kódu open source projektov vrátane ROS je napísaná v jazyku C++,  aj v tomto článku sa zameriame primárne na C++, pre záujemcov o Python a Javascript odporúčame túto Wiki stránku. Veľkou výhodou ROS C++ style guide je, že vychádza z Google C++ style Guide, čiže ak si raz zvyknete na štýl programovania v ROS, je pravdepodobné, že aj pri prechode na iné platformy využívajúce jazyk C++ si budete môcť preniesť zaužívaný štýl so sebou.

Názvy

Ak ste si doteraz pri vymýšlaní názvov neboli úplne istý, či začínať veľkým alebo malým písmenom, prípadne či na oddeľovanie slov v názve používať podčiarkovník alebo radšej zmenu z malých na veľké písmená, nasledujúcu tabuľku si vytlačte a prilepte hneď vedľa monitora:

Šablóna Použiť pre
CamelCased
Class, Types,
camelCased
Functions,
under_scored
Variables, Packages, Topics/ Services, Files, Libraries, Namespaces
under_scored_
Class/Member Variables
ALL_CAPITALS
Constants

 Formátovanie

Pri formátovaní je nutné dodržiavať 4 základné podmienky:

  1. Nepoužívame tabulátor ale spacujeme
  2. Dĺžka riadka by nemala presiahnuť 120 znakov
  3. Množinové zátvorky za if, while, switch by mali byť na samostatných riadkoch
  4. Bloky odsadzujeme vždy po dvoch medzerách

Príklad z wiki stránky ako by mal vyzerať kód rešpektujúci horeuvedené pravidlá:

code_cpp

Pôvodná Wiki stránka obsahuje ešte viacero odporúčaní, či už o makrách, príkazoch preprocesora, používaní namespaces, globálnych premenných, o ktorých je dobré vedieť. Každopádne prepísať makro na funkciu je oveľa menej náročné ako dodatočne upravovať odsadenie každého jedného riadka v programe.

Chvíľu bude asi trvať kým si na tieto pravidlá zvyknete, ale skôr či neskôr ich dodržiavanie určite oceníte. Rýchla a jednoduchá orientácia vo vašom kóde,  je totiž pri open source vývoji priam nevyhnutnosť.

František Ďurovský