-
Notifications
You must be signed in to change notification settings - Fork 801
Robomongo Code Quality
Gökhan Simsek edited this page Sep 30, 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).
- 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*).
Concurrency
- 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.
...
References
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
...
Spell Checker
- 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
To-do:
- Add tool similar to "PC Lint" ...