vDC Wiki

Definition of Done - vDC

Feature and task

  1. MR added to comment
  2. No new defects in cppcheck and Coverity
  3. No new defects in Unit tests
  4. Unit test added (if possible)
  5. Developer test done (dev feed) - by other engineer that was implementing
  6. Spent hours are filled in

Defect

  1. MR added to comment
  2. Comment added - cause and solution
  3. No new defects in Cppcheck and Coverity
  4. No new defects in Unit tests
  5. Unit test added (if possible)
  6. Developer test done (dev feed, different browsers) - by other engineer that was implementing
  7. Spent hours are filled in

Definition of Done - vDC UI

Feature and task

  1. MR added to comment
  2. No new defects in Linting
  3. No new defects in Unit tests
  4. Unit test added (if reasonable)
  5. Developer test done (dev feed) - by other engineer that was implementing
  6. Spent hours are filled in

Defect

  1. MR added to comment
  2. Comment added - cause and solution
  3. No new defects in Linting
  4. No new defects in Unit tests
  5. Unit test added (if reasonable)
  6. Developer test done (dev feed, different browsers) - by other engineer that was implementing
  7. Spent hours are filled in

Code review checklist

- block formatting as follows:

if () ; // one line in the same line is allowed

if ((wa1) && (wa2)) {

} else if () {

}

for (i; i < 0; ++i) { // other loops in the same form

}

switch () {
  case 1: //brackets if needed, one line is acceptable
  case 2:
  default: //required
}

void Myclass::func(const string& aParam1, int aParam2, auto... aParams)
{
  //using aParams...
}

- class declaration:

  • class member initializations in class declaration if possible
  • no 'using namespace' in header
  • two lines separation between method definitions in source file
/*
==========================================================================

    Class name // separator to be used in header and source file
==========================================================================
*/

class A // or struct {

using inherited

public:
  ctor // one line definition is allowed in header
  dtor // one line  definition is allowed in header
  overridden
  enum class EE; // declaration, but definition out of class
  methods //  one line  definition is allowed in header

protected:
  overriden
  methods

private:
  overriden
  methods

protected:
  static const
  class members

private:
  static const
  class members

};

enum class A::EE {
  A, // camel case
};
  • (static) constexpr over static const
  • std over boost
  • unique over shared
  • #pragma once over ifdef
  • reference over pointers
  • raw string literals over special signs
  • streams over formatted string
  • enum class over enum
  • interface over wrappers and (ugh!) friends (yuck!)
  • using over typedef
  • use vdc-utils
  • static const SOME_CONST; // all caps
  • class MyClass // starts with a capital letter + camel case
  • method, function void myFunction() // starts with a small letter + camel case
  • function args void myFunction(string aParam) // starts wit small 'a' + camel case
  • namespace block without indentation
  • ifdef without indentation
  • comment on closing bracket for namespace or #endif
  • multiline comment block if comment is multiline
  • interface class with 'I' prefix // IMyInterface
  • class member with 'm' prefix // mMyClassMember
  • pointer with 'Ptr' suffix // mMyClassMemberPtr / myPointerInMethodPtr / aMyPointerParamPtr

Usefull things

Increase log level of vdc

VDC_DSUID should be replaced by vdc dsuid. This command can be executed from local UI.

dS.utils.ajaxRequest('/json/circuit/invokeMethod', { method: 'loglevel', dsuid: "VDC_DSUID", params: JSON.stringify({ value: 7 }) });