User Tools

Site Tools


en:devel:coding-style

Differences

This shows you the differences between two versions of the page.


Previous revision
en:devel:coding-style [2021/02/13 11:23] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== Actionaz coding style ======
 +
 +//Version 1.0 - By Jonathan Mercier-Ganady//
 +
 +Before contributing to the project please read the following page.
 +
 +The Actionaz coding style is almost the same as the [[http://qt-project.org/wiki/Qt_Coding_Style|coding style of Qt]].
 +
 +<note tip>Only the differences with the Qt coding style are shown.</note>
 +
 +===== General rules =====
 +
 +  - Remember to add //tr()// around text that can be translated.
 +  - Commit often,
 +  - Syntax when fixing a Redmine declared bug : [explanation] fixes bug #[bug number here]
 +  - Code in C++, not in C.
 +  - Never copy & paste code, if you want to do it that means that something is wrong : re-think the code structure.
 +  - Adapt yourself to the project for which you are developing.
 +
 +===== Comments =====
 +
 +Only comment when needed, usually naming the variables, classes and methods correctly
 +should be sufficient for every developer to understand what the code does.
 +
 +  - Comment each complex algorithm.
 +  - Don't over-comment.<code>
 +// Wrong
 +// Returns: the value of X
 +int getX();
 +</code>
 +
 +===== Class attributes =====
 +
 +
 +  - Class attributes are always private, use getters and setters to access them.
 +  - Class attributes start with a lower m.<code>
 +class MyClass
 +{
 +    private:
 +    int mMyValue;
 +};
 +</code>
 +
 +===== Setters and getters =====
 +
 +  - Setters start with “set”.
 +  - Getters don't start with “get”.
 +  - Getters are const.<code>
 +class MyClass
 +{
 +    public:
 +        int myValue() const { return mMyValue; }
 +        void setMyValue (int myValue) { mMyValue = myValue; }
 +    private:
 +        int mMyValue;
 +};
 +</code>
 +
 +===== Indentation =====
 +
 +  - Indentation is made with tabulations, not spaces. The tabulation character is designed for that. Spaces are made to separate words, so using spaces to indent in 2010+ with modern editors makes no sense.
 +  - The tabulation and the indentation size should be set to <wrap hi>**4**</wrap>, warning : this is not the default setting in QtCreator !
 +
 +===== Declaring variables =====
 +
 +  - Classes doesn't start with any special letter.
 +  - Variables are declared when used, not at the start of a block like in C.<code>
 +// Wrong
 +int actionIndex;
 +
 +for(int i = 0; i < 5; ++i)
 +{
 +    actionIndex = i * 2;
 +    // actionIndex is used here...
 +}
 +
 +// Correct
 +for(int i = 0; i < 5; ++i)
 +{
 +    int actionIndex = i * 2;
 +    // actionIndex is used here...
 +}
 +</code>
 +
 +===== Braces =====
 +
 +  - The correct way to write an if statement :<code>
 +//Correct
 +if(foo)
 +{
 +    // do stuff here
 +}
 +
 +//Wrong
 +if (foo) {
 +    // do stuff here
 +}
 +</code>
 +  - The following notation is accepted when the statement is not too complex, and for one level only.<code>
 +//Wrong
 +if(foo)
 +    if(bar)
 +        doSomething();
 +
 +//Correct
 +if(foo)
 +{
 +    if(bar)
 +        doSomething();
 +}
 +</code>
 +  - Never use C-style casts.<code>
 +// Wrong
 +float a = 4.2f;
 +int b = (int)a;
 +
 +// Correct
 +float a = 4.2f;
 +int b = static_cast<int>(a);
 +</code>
 +
 +===== Switch statements =====
 +
 +  - Every case **does not** have to have a break (or return) statement at the end or a comment to indicate that there’s intentionally no break
 +
 +===== Line breaks =====
 +
 +  - No numerical limit to the length of a line, just keep it not “too long”.
 +
 +----
 +Go back to the page : [[en:devel|Contribute to Actionaz]]
 +
 +Other languages for this page : [[fr:devel:coding-style|(fr)]] 
 +