====== 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]].
Only the differences with the Qt coding style are shown.
===== 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.
// Wrong
// Returns: the value of X
int getX();
===== Class attributes =====
- Class attributes are always private, use getters and setters to access them.
- Class attributes start with a lower m.
class MyClass
{
private:
int mMyValue;
};
===== Setters and getters =====
- Setters start with “set”.
- Getters don't start with “get”.
- Getters are const.
class MyClass
{
public:
int myValue() const { return mMyValue; }
void setMyValue (int myValue) { mMyValue = myValue; }
private:
int mMyValue;
};
===== 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 **4**, 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.
// 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...
}
===== Braces =====
- The correct way to write an if statement :
//Correct
if(foo)
{
// do stuff here
}
//Wrong
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();
//Correct
if(foo)
{
if(bar)
doSomething();
}
- Never use C-style casts.
// Wrong
float a = 4.2f;
int b = (int)a;
// Correct
float a = 4.2f;
int b = static_cast(a);
===== 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)]]