summaryrefslogtreecommitdiff
path: root/for_dev/code_conventions.md
diff options
context:
space:
mode:
authorROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-02-10 11:05:40 +0100
committerROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-02-10 11:05:40 +0100
commitf2c85ed1fd87f9ca50b1ed80135b6eea21d08c33 (patch)
treebadc1a5f518c04e2d2e87740083eee453107ddae /for_dev/code_conventions.md
parent5c037fb06250e93ad04bb45bdbceb937701e03fa (diff)
Move next_release in for_dev directory. Add a for_dev/for_maintainer directory to explain how to create a GUDHI release
Diffstat (limited to 'for_dev/code_conventions.md')
-rw-r--r--for_dev/code_conventions.md26
1 files changed, 26 insertions, 0 deletions
diff --git a/for_dev/code_conventions.md b/for_dev/code_conventions.md
new file mode 100644
index 00000000..5882f78e
--- /dev/null
+++ b/for_dev/code_conventions.md
@@ -0,0 +1,26 @@
+# Naming conventions
+
+## C++
+
+### In the code:
+* The classes and functions of a package should be in a sub-namespace of the `Gudhi` namespace. The sub-namespace names are in lowercase and use underscore separators. E.g. `Gudhi::package_name::`
+* Concepts are named with camel case starting with uppercase. E.g. `PersistentHomology` for the concept of Persitence homology.
+* Classes start with an uppercase letter and use underscore separators. E.g. `Skeleton_blocker_contractor`.
+* Member functions and free functions are in lowercase and use underscore separators. E.g. `int num_vertices()`.
+* Constants and macros are in uppercase.
+* Macros should begin with the prefix `GUDHI_`.
+
+### File names:
+* All headers are named *.h and all sources are named *.cpp.
+* If a single class or function is provided in a file, its name (with the same letter case) should be used for the file name.
+* If a file does not contain a single class, its name should not begin with a capital letter.
+* Test files should be called `test_[what_is_tested].cpp`. E.g. `test_sparsify_point_set.cpp`
+* Example files should be called `example_[what_it_is].cpp`. E.g. `example_sparsify_point_set.cpp`
+
+### In CMakeLists.txt files:
+* The name of the "project" should be in this form: `Package_[tests|examples|…]`. E.g. `project(Simplex_tree_examples)`.
+* The name if each "target" (first parameter of add_executable) should be in this form: `Package_{name of the cpp file without extension}`. E.g `add_executable(Subsampling_test_sparsify_point_set test_sparsify_point_set.cpp)`.
+
+## Python
+
+In progress... \ No newline at end of file