From 24d97da543ecfcca89e41d4ca0202bcc50219ba8 Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 6 Dec 2024 13:57:50 -0500 Subject: [PATCH] Help/dev: Add some coding conventions to source code guide --- Help/dev/source.rst | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/Help/dev/source.rst b/Help/dev/source.rst index 363089fbde..039a211abc 100644 --- a/Help/dev/source.rst +++ b/Help/dev/source.rst @@ -20,6 +20,40 @@ format only a subset of files, such as those that are locally modified. .. _`.clang-format`: ../../.clang-format .. _`Utilities/Scripts/clang-format.bash`: ../../Utilities/Scripts/clang-format.bash +C++ Code Conventions +==================== + +We loosely follow a few coding conventions: + +* Name class members using ``CamelCase``. + +* Reference class members using ``this->Member``. + +* Use east ``const`` style, e.g., ``int const`` instead of ``const int``. + Exceptions: + + * C strings: ``const char*`` + * Global constants: ``static const ...`` + +* Declare variables using a locally-specified type: + + .. code-block:: c++ + + T x = f(); + + Use ``auto`` only if the real type explicitly appears in the initializer: + + .. code-block:: c++ + + auto y = cm::make_unique(); + auto z = []() -> T {...}(); + + Exceptions: + + * Iterators: ``auto i = myMap.find(myKey);`` + + * Lambdas: ``auto f = []() {...};`` + C++ Subset Permitted ====================