This repository has been archived by the owner on Jan 9, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
Coding style
André Miranda edited this page Mar 22, 2015
·
1 revision
- Filename extension should be *.cpp, *.c or *.h.
- Filename should be all lowercase and can include underscores (_), but never spaces.
- All header files should have #define guards to prevent multiple inclusion. The format of the symbol name should be
<FILENAME>_H_
. - Use standard order for readability and to avoid hidden dependencies: C library, C++ library, other libraries' .h, the project's .h.
- Remove all unnecessary includes from the header and move what possible to the source file.
- Prefer nonmember functions within a namespace or static member functions to global functions.
- Place a function's variables in the narrowest scope possible, and initialize variables in the declaration.
- Classes names should be in singular and camel case, ex. FooClass, EventNext.
- Avoid doing complex initialization in constructors (in particular, initialization that can fail or that requires virtual method calls).
- Use a struct only for passive objects that carry data; everything else is a class.
- Avoid the use of friend classes.
- Avoid the use of Multiple Inheritance.
- Make member variables private and prefixed with "m_", ex. m_my_variable_name.
- Provide access to member variables through accessor methods as needed, getMyVariableName and setMyVariableName.
- Interfaces names should be prefixed with 'I', ex. IDao.
- Use either the // or /* */ syntax. Try to describe things consistently and briefly.
-
All files should be UTF-8 encoded.
-
Avoid non-ASCII characters.
-
Use spaces instead of tabs, and indent 4 spaces at a time.
-
There's no line length limit, but try keep it smaller than 100 characters long.
-
Pointers declarations should follow:
Type* foo
. -
Function calls should be on one line if it fits, otherwise, wrap arguments at the parenthesis:
smallFunction(arg1); longFunction(argument1, argument2 + argument3, x, y, argument4);
-
Conditionals should follow this pattern:
if(condition1 && (x + y > z)) { do_something(); } else if(condition2) { do_something_else(); } else { do_whatever(); }
- Be very cautious with macros. Prefer enums and const variables to macros.
- Do not use C++ exceptions.
- Use inner classes and inner enums, do not pollute global namespace.
- Don't use global variables and singletons. Use only global constants.
- All identifiers, comments and string literals should be written in English and should be syntactically and grammatically correct.
Sources: