Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Robomongo Code Quality
1. Code Checks/Actions Before Commit
Note: The following guidelines are extracted from various sources (see "References" for all list) mainly from "C++ Core Guidelines by Bjarne Stroustrup, Herb Sutter, July 28, 2016" based on Robomongo project's needs and code structure.
- Keep things private as much as possible. (member variables, functions etc..)
- Use "const" a lot. Try to refactor "non-const" to "const" where possible (variables, functions, anything possible..)
- Always try to initialize a variable with default value. (built-in type variables (i.e. int, int*) may/will have garbage values when un-initialized which might result with insidious bugs)
- Make sure member variables are all initialized (uninitialized variables may have undefined values)
- Use C++11 smart pointers (unique, shared, weak) instead of explicit(naked) new and delete.
- Avoid using explicit (naked, non-RAII) new and delete. (strong memory leak candidate)
- If "new & delete" must be used, wrap in ctor and dtor for automatic clean up (RAII).
- Keep using raw pointers (T*) for non-owning purposes.
- Do not use smart pointers(owning ptrs) for the purpose of raw(non-owning) pointers (T*).
- Share the copy of object across threads. Avoid passing pointer or reference to an object (local variable, class member.. any thread object) across different threads.
C++ Core Guidelines by Bjarne Stroustrup, Herb Sutter, July 28, 2016
Scott Meyer's guideline-based books on C++ (http://www.aristeia.com/)
- Effective Modern C++, Scott Meyers, 2014
- Effective C++, Third Edition, 2005
- Effective STL, 2001
- More Effective C++, 1996
C++ Coding Standards: 101 Rules, Guidelines, and Best Practices Nov 4, 2004
by Herb Sutter and Andrei Alexandrescu
2. Static Code Analysis Tools
- We use spell checking for all text (user/programmer visible texts and comments).
- Following tool does a pretty good job to ensure this: Visual Studio Spell Checker
- Add tool similar to "PC Lint" ...