diff options
| -rw-r--r-- | contributing.md | 112 | 
1 files changed, 112 insertions, 0 deletions
| diff --git a/contributing.md b/contributing.md index 88cba32..91cd12b 100644 --- a/contributing.md +++ b/contributing.md @@ -421,6 +421,118 @@ that you can click on to open them.    void bar(Point p);    ```    </td></tr></table></details> +- <details><summary> +  Follow the rule-of-five +  </summary><table><tr><th>Good</th><th>Bad</th></tr><tr><td> + +  ```cpp +  class Foo { +  public: +    Foo(); +    ~Foo(); +    Foo(const Foo &); +    Foo(Foo &&) noexcept; +    Foo & operator=(const Foo &); +    Foo & operator=(Foo &&) noexcept; +  }; +  ``` +  </td><td> + +  ```cpp +  class Foo { +  public: +    Foo(); +    ~Foo(); +    Foo(const Foo &); +  }; +  ``` +  </td></tr></table></details> +- <details><summary> +  Ensure const-correctness +  </summary><table><tr><th>Good</th><th>Bad</th></tr><tr><td> + +  ```cpp +  class Foo { +  public: +    int get_value() const; +    void set_value(int new_value); +    const std::string & get_name() const; +    void set_name(const std::string & new_name); +  private: +    int value; +    std::string name; +  }; +  ``` +  </td><td> + +  ```cpp +  class Foo { +  public: +    int get_value(); +    void set_value(int new_value); +    std::string get_name(); +    void set_name(std::string new_name); +  private: +    int value; +    std::string name; +  }; +  ``` +  </td></tr></table></details> +- <details><summary> +  File names (.h/.cpp/.hpp) should be written using CamelCase +  </summary><table><tr><th>Good</th><th>Bad</th></tr><tr><td> + +  ```cpp +  MyClass.h +  MyClass.cpp +  MyClass.hpp +  ``` +  </td><td> + +  ```cpp +  my_class.h +  my_class.cpp +  my_class.hpp +  ``` +  </td></tr></table></details> +- <details><summary> +  Implementation is not allowed in header files, except if the method only returns a constant value +  </summary><table><tr><th>Good</th><th>Bad</th></tr><tr><td> + +  ```cpp +  class Foo { +  public: +    int get_value() const { return 42; } +  }; +  ``` +  </td><td> + +  ```cpp +  class Foo { +  public: +    int calculate_value() const { +      int result = 0; +      // complex calculation +      return result; +    } +  }; +  ``` +  </td></tr></table></details> +- <details><summary> +  Use angle brackets (`<>`) for including libraries and double quotes (`""`) for including local files. +  </summary><table><tr><th>Good</th><th>Bad</th></tr><tr><td> + +  ```cpp +  #include <iostream> +  #include "MyClass.h" +  ``` +  </td><td> + +  ```cpp +  #include "iostream" +  #include <MyClass.h> +  ``` +  </td></tr></table></details>  ## CMakeLists-specific |