Code style guidelines
Jump to navigation
Jump to search
General Guidelines
For everybody elses' sanity, please just use something that resembles the Linux Kernel code style, with the exception that cases in switch statements are indented a level. Much of the already existing code is somewhat weird looking, do not try to replicate that. Use your best judgement for C++-specific syntax.
Spaces
- Do NOT use spaces for indentation
- Try to stay under 6 levels of indentation
- Do add spaces between operators so they line up (when appropriate). For example:
np_terrain_base = settings->getNoiseParams("mgv6_np_terrain_base"); np_terrain_higher = settings->getNoiseParams("mgv6_np_terrain_higher"); np_steepness = settings->getNoiseParams("mgv6_np_steepness"); np_height_select = settings->getNoiseParams("mgv6_np_height_select"); ... bool success = np_terrain_base && np_terrain_higher && np_steepness && np_height_select && np_trees && np_mud && np_beach && np_biome && np_cave;
- Separate different parts of functions with newlines for readability
- Separate functions by two newlines (not necessary, but encouraged)
Don't be too C++y
- Don't use references when they're not necessary. They are rather inflexible and can be misleading.
- Don't use initializer lists unless absolutely necessary (initializing an object inside a class, or initializing a reference)
- Try to avoid operator overloading
- Avoid iterators like the plague
- Avoid templates unless very convenient
Classes
- Don't put actual code in header files, unless it's a 3-liner or an inline function
- Class definitions should go in header files
- Substantial (over 4 LoC) methods are defined outside of the class definition
- Class names are PascalCase, method names are camelCase
- Functions not part of any class should be unix_lowercase_underscore_style()
Comments
- Don't make uninformative comments like this:
/* Draw "Loading" screen */ draw_load_screen(L"Loading...", driver, font);
- Add comments to explain a non-trivial but important detail about the code, or explain behavior that is not obvious
Use STL, avoid Irrlicht containers
Don't let things get too large
- Try to keep lines under 80 characters. It's okay if it goes over by a few, but 90 character lines or larger are definitely unacceptable.
- Functions should not be over 200 LoC - if you are concerned with having to pass too many parameters to child functions, make whatever it is into a class
- Don't let files get too large (over 1500 LoC)
- Currently existing huge files (game.cpp, server.cpp, etc.) are in the slow process of being cleaned up