Coding standards ================ |Dock| is written using the `LLVM style C++ code `__ and formatted using `ClangFormat `__. LLVM coding standards and additions ----------------------------------- The coding standards are documented in `LLVM Coding Standards `__. With regards to that document, |Dock| has made the following changes in the coding standards: * Standard C++11 is used instead of C++14. In the near future the switch will be made to C++17. * Implementation file extension should be ``.cxx`` instead of ``.cpp``. * Variable names should use ``camelBack`` instead of ``CamelCase`` and member variables should be prefixed with ``m_`` (similar to the proposed `Variable Names Plan `__ in LLVM). See also -------- Helpful online sources of knowledge about C++: * `News, Status and Discussion about Standard C++ `__ * `C++ reference `__ * `C++ subreddit (/r/cpp) `__ Particularly useful books about software design, algorithms, and programming: #. `Code Complete `__ by `Steve McConnel `__, published by Microsoft Press in 2004. #. `Metaheuristics: From Design to Implementation `_ by `El-Ghazali Talbi `__, published by Wiley in 2009. #. `Effective Modern C++ `_ by `Scott Meyers `__, published by O'Reilly in 2014. Also interesting and useful are "Effective C++", "More Effective C++", and "Effective STL" by the same author. The future development will switch from the use of C++11 to the use of C++17. A very good book covering the new features in C++17 is `C++17 in Detail `__ by `Bartlomiej Filipek `__, published by Leanpub in 2017. The blog post `C++17 Features `__ is a shorter version.