Robomongo Code Quality

Gökhan Simsek edited this page Oct 31, 2016 · 15 revisions

C/C++

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.

General

  • 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)

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

C++ Coding Standards: 101 Rules, Guidelines, and Best Practices Nov 4, 2004
by Herb Sutter and Andrei Alexandrescu

...

2. Static Code Analysis Tools

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" ...
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.