# Styleguide ## Guidelines In general CBM follows the ALICE styleguide. It can be found here: - [Coding guidelines](https://rawgit.com/AliceO2Group/CodingGuidelines/master/coding_guidelines.html) - [Naming and formatting conventions](https://rawgit.com/AliceO2Group/CodingGuidelines/master/naming_formatting.html) - [Comments guidelines](https://rawgit.com/AliceO2Group/CodingGuidelines/master/comments_guidelines.html) ## Exceptions Note that we've adopted some exceptions to these rules: ### Header files Use `#pragma once` for header files instead of `#define` guards. _Reason_: Less error prone and doesn't have to be altered when the file path changes. Potential drawbacks (issues with symlinks, compiler support) don't seem relevant for CbmRoot. ### Naming #### Function names Function names should start with a capital letter. (Instead of lower case in ALICE) _Reason_: Compatibility with old code. #### Class members Class members should be prefixed with f (instead of m in ALICE). (Struct members are never prefixed!) _Reason_: No advantage in changing prefix. Stay compatible with existing code. ### Formatting Formatting differs in details from ALICE. Differences are caught with clang-format.