en:devel:coding-style
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| en:devel:coding-style [2013/02/10 13:58] – created (raw copy) niconil | 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 | + | //Version 1.0 - By Jonathan Mercier-Ganady// |
| - | By Jonathan Mercier-Ganady | + | |
| - | Before contributing to the project please read the following | + | Before contributing to the project please read the following |
| - | The Actionaz coding style is almost the same as the coding style of Qt : | + | The Actionaz coding style is almost the same as the [[http://qt-project.org/wiki/Qt_Coding_Style|coding style of Qt]]. |
| - | http://qt.gitorious.org/qt/pages/ | + | |
| - | Note : Only the differences with the Qt coding style are shown. | + | <note tip>Only the differences with the Qt coding style are shown.</ |
| - | General rules | + | ===== General rules ===== |
| - | Remember to add tr() around text that can be translated. | + | - Remember to add //tr()// around text that can be translated. |
| - | Commit often, | + | |
| - | number here] | + | - Syntax |
| - | 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 |
| - | • | + | |
| - | + | ||
| - | • | + | |
| - | • | + | |
| - | + | ||
| - | • | + | |
| - | + | ||
| - | Comments | + | |
| Only comment when needed, usually naming the variables, classes and methods correctly | Only comment when needed, usually naming the variables, classes and methods correctly | ||
| should be sufficient for every developer to understand what the code does. | should be sufficient for every developer to understand what the code does. | ||
| - | • | + | - Comment each complex algorithm. |
| - | + | | |
| - | Comment each complex algorithm. | + | |
| - | + | ||
| - | • | + | |
| - | + | ||
| - | Don't over-comment. | + | |
| - | + | ||
| - | • | + | |
| // Wrong | // Wrong | ||
| // Returns: the value of X | // Returns: the value of X | ||
| int getX(); | int getX(); | ||
| + | </ | ||
| - | Class attributes | + | ===== Class attributes |
| - | Class attributes are always private, use getters and setters to access them. | ||
| - | |||
| - | • | ||
| - | |||
| - | Class attributes start with a lower m. | ||
| - | |||
| - | • | ||
| + | - Class attributes are always private, use getters and setters to access them. | ||
| + | - Class attributes start with a lower m.< | ||
| class MyClass | class MyClass | ||
| { | { | ||
| - | private: | + | |
| - | int mMyValue; | + | int mMyValue; |
| }; | }; | ||
| + | </ | ||
| - | Setters and getters | + | ===== Setters and getters |
| - | + | ||
| - | Setters start with “set”. | + | |
| - | + | ||
| - | • | + | |
| - | + | ||
| - | Getters don't start with “get”. | + | |
| - | + | ||
| - | • | + | |
| - | + | ||
| - | Getters are const. | + | |
| - | + | ||
| - | • | + | |
| + | - Setters start with “set”. | ||
| + | - Getters don't start with “get”. | ||
| + | - Getters are const.< | ||
| class MyClass | class MyClass | ||
| { | { | ||
| - | public: | + | |
| - | int myValue() const | + | int myValue() const { return mMyValue; } |
| - | { return mMyValue; } | + | void setMyValue (int myValue) { mMyValue = myValue; } |
| - | void setMyValue (int myValue) { mMyValue = myValue; } | + | private: |
| - | private: | + | int mMyValue; |
| - | int mMyValue; | + | |
| }; | }; | ||
| + | </ | ||
| - | Indentation | + | ===== Indentation |
| - | Indentation is made with tabulations, | + | - Indentation is made with tabulations, |
| - | that. Spaces are made to separate words, so using spaces to indent in 2010+ with modern | + | - The tabulation and the indentation size should be set to <wrap hi> |
| - | editors makes no sense. | + | |
| - | • | + | ===== Declaring variables |
| - | + | ||
| - | The tabulation and the indentation size should be set to 4, warning : this is not the default | + | |
| - | setting in QtCreator ! | + | |
| - | + | ||
| - | • | + | |
| - | + | ||
| - | Declaring variables | + | |
| - | + | ||
| - | Variables are declared when used, not at the start of a block like in C. | + | |
| - | + | ||
| - | • | + | |
| + | - Classes doesn' | ||
| + | - Variables are declared when used, not at the start of a block like in C.< | ||
| // Wrong | // Wrong | ||
| int actionIndex; | int actionIndex; | ||
| Line 112: | Line 71: | ||
| for(int i = 0; i < 5; ++i) | for(int i = 0; i < 5; ++i) | ||
| { | { | ||
| - | actionIndex = i * 2; | + | |
| - | + | // actionIndex is used here... | |
| - | // actionIndex is used here... | + | |
| } | } | ||
| Line 121: | Line 78: | ||
| for(int i = 0; i < 5; ++i) | for(int i = 0; i < 5; ++i) | ||
| { | { | ||
| - | int actionIndex = i * 2; | + | |
| - | + | // actionIndex is used here... | |
| - | // actionIndex is used here... | + | |
| } | } | ||
| + | </ | ||
| - | Classes doesn' | + | ===== Braces |
| - | + | ||
| - | • | + | |
| - | + | ||
| - | Braces | + | |
| - | + | ||
| - | The correct way to write an if statement : | + | |
| - | + | ||
| - | • | + | |
| + | - The correct way to write an if statement :< | ||
| + | //Correct | ||
| if(foo) | if(foo) | ||
| { | { | ||
| - | // do stuff here | + | |
| } | } | ||
| - | So please, never use the following notation : | ||
| + | //Wrong | ||
| if (foo) { | if (foo) { | ||
| - | // do stuff here | + | |
| } | } | ||
| + | </ | ||
| + | - The following notation is accepted when the statement is not too complex, and for one level only.< | ||
| + | //Wrong | ||
| + | if(foo) | ||
| + | if(bar) | ||
| + | doSomething(); | ||
| - | The following notation is accepted when the statement is not too complex, and for one level | + | //Correct |
| - | only. | + | |
| - | + | ||
| - | • | + | |
| - | + | ||
| - | // Wrong | + | |
| - | if(foo) | + | |
| - | if(bar) | + | |
| - | doSomething() ; | + | |
| - | // Correct | + | |
| if(foo) | if(foo) | ||
| { | { | ||
| - | if(bar) | + | |
| - | doSomething() ; | + | doSomething(); |
| } | } | ||
| - | • Never use C-style casts. | + | </ |
| + | - Never use C-style casts.< | ||
| // Wrong | // Wrong | ||
| float a = 4.2f; | float a = 4.2f; | ||
| int b = (int)a; | int b = (int)a; | ||
| + | |||
| // Correct | // Correct | ||
| float a = 4.2f; | float a = 4.2f; | ||
| int b = static_cast< | int b = static_cast< | ||
| + | </ | ||
| + | |||
| + | ===== 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 | ||
| - | Switch statements | + | ===== Line breaks ===== |
| - | Every case does not have to have a break (or return) statement at the end or a comment to | + | - No numerical limit to the length of a line, just keep it not “too long”. |
| - | indicate that there’s intentionally no break | + | |
| - | • | + | ---- |
| + | Go back to the page : [[en: | ||
| - | Line breaks | + | Other languages for this page : [[fr: |
| - | No numerical limit to the length of a line, just keep it not “too long”. | ||
| - | • | ||
en/devel/coding-style.1360504699.txt.gz · Last modified: (external edit)
