-
Notifications
You must be signed in to change notification settings - Fork 801
Robomongo Code Quality
Gökhan Simsek edited this page Sep 20, 2016
·
17 revisions
General
- Keep things private as much as possible. (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.
- Make sure member variables are all initialized (uninitialized variables may have undefined values)
Resource Management
- 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).
- Do not use smart pointers(owning ptrs) for the purpose of raw(non-owning) pointers (T*).
- Keep using raw pointers (T*) for non-owning purposes.
Concurrency
- Share the copy of object across threads. Do not pass pointer or reference to an object (local variable, class member.. any thread object) across different threads.
...
Spell Checker
- We use spell checking for all user/programmer visible texts, comments. Following tool does a pretty good job to ensure this:
- Visual Studio Spell Checker (https://visualstudiogallery.msdn.microsoft.com/a23de100-31a1-405c-b4b7-d6be40c3dfff)
...
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
...