Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Separate inline headers: We allow putting inline functions in separate files, using the suffix .inline.h. This can speed up compile times by reducing the volume of code to be compiled and reducing dependencies between headers.
  2. Header include guards: for new code, we prefer #pragma once because it is cleaner than the classic #include guards

Variable Naming

We use UPPER_CASE for constants instead of kConstantName.

Scoping

  1. namespaces the using namespace directive is allowed in .cc files in limited cases where it greatly reduces code volume.
    1. Pros: reduces code volume, less churn in "using namespace::class" directives.
    2. Cons: pollutes the namespace, causes conflicts, makes it more difficult to determine the type of an object

...

Code Block
// Google Recommends:
ReturnType LongClassName::ReallyReallyReallyLongFunctionName(
    Type par_name1,  // 4 space indent
    Type par_name2,
    Type par_name3) {
  DoSomething();  // 2 space indent
  ...
}
// we use:
ReturnType LongClassName::ReallyReallyReallyLongFunctionName(
    Type par_name1, Type par_name2, Type par_name3) { // 4 space indent
  DoSomething();  // 2 space indent
  ...
}


      3. Conditionals we format conditionals as follows

...

Code Block
git diff -U0 --no-color HEAD^ | "${IMPALA_TOOLCHAIN_PACKAGES_HOME}/llvm-${IMPALA_LLVM_VERSION}/share/clang/clang-format-diff.py" -binary "${IMPALA_TOOLCHAIN_PACKAGES_HOME}/llvm-${IMPALA_LLVM_VERSION}/bin/clang-format" -p1 -i

...

Code Block
sudo apt-get install clang-format-3.9
git diff -U0 --no-color HEAD^ | clang-format-diff-3.9 -p1 -i

...

 



Info
titleTip
clang-format is not perfect and sometimes reformats things in strange ways, or will reformat large areas of code. If clang-format doesn't match the existing style of the surrounding code, please consider manually formatting that part of the code - mixing large white

...

Code Block
git diff asf-gerrit/master | "${IMPALA_TOOLCHAIN_PACKAGES_HOME}/llvm-${IMPALA_LLVM_VERSION}/share/clang/clang-tidy-diff.py" -clang-tidy-binary "${IMPALA_TOOLCHAIN_PACKAGES_HOME}/llvm-${IMPALA_LLVM_VERSION}/bin/clang-tidy" -p 1

 

 

...