Skip to content

ADIOS2 Coding Guidelines

williamfgc edited this page May 4, 2017 · 26 revisions

This wiki page contains coding guidelines that all developers must follow as standard practice in ADIOS 2.0 to take full advantage of the latest C++11 standard. This list is open as corrections and new ideas/suggestions come in place. Take them as mandatory good practices to improve ADIOS2 development and collaboration. Many topics are taken from Stroustrup, Sutter, and Meyers books, the clang-format, and google C++ style guide.

Objectives

  • Collaboration

    • Make your work easy to understand and share among members of the ADIOS2 community
    • Allocate more time for path-finding new functionality and performance improvements rather than understanding developers' coding styles
    • Expand developers and users base
  • Execution

    • Translate new research ideas into production by reusing features already in the C++11 standard or in the ADIOS2 infrastructure
  • Quality

    • Improve the quality of the final software product: reduce potential security risks (segmentation faults, memory leaks and overflows)

Contents

- [Clang Format Text Style](https://github.com/ornladios/ADIOS2/wiki/Clang-Format-Text-Style)  
- [File Header Structure and Includes](https://github.com/ornladios/ADIOS2/wiki/File-Header-Structure-and-Includes)  
- [Variables Scope, Functions, and Namespaces](https://github.com/ornladios/ADIOS2/wiki/Variables-Scope,-Functions,-and-Namespaces)  
- [Classes and Structs](https://github.com/ornladios/ADIOS2/wiki/Classes-and-Structs)  
- [RAII Memory Management](https://github.com/ornladios/ADIOS2/wiki/RAII-Memory-Management)  
- [const, constexpr correctness](https://github.com/ornladios/ADIOS2/wiki/const,-constexpr-correctness)  
- [C Interoperability and Type Casting](https://github.com/ornladios/ADIOS2/wiki/C-Interoperability-and-Type-Casting)  
- [Exceptions for Error Reporting](https://github.com/ornladios/ADIOS2/wiki/Exceptions-for-Error-Reporting)