ALICE O 2 C coding conventions Adriana Telesca

  • Slides: 27
Download presentation
ALICE O 2 C++ coding conventions Adriana Telesca on behalf of the CWG 2

ALICE O 2 C++ coding conventions Adriana Telesca on behalf of the CWG 2 March, 21 st 2014

CWG 2 Tools, guidelines and procedures ▶ Propose common guidelines, policies and procedures ▶

CWG 2 Tools, guidelines and procedures ▶ Propose common guidelines, policies and procedures ▶ Conduct surveys for tools that cover the activities of most of the other working groups (aka Support tools) ▶ Coordinate other surveys ▶ Act as a central point where we keep track of who is evaluating what ▶ Ensure that resources are optimized and communication among the working groups is facilitated A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 2

CWG 2 Members Adriana: DAQ, AMORE software development Alina: Offline, Offline software cycle organization

CWG 2 Members Adriana: DAQ, AMORE software development Alina: Offline, Offline software cycle organization Barth: DAQ, AMORE software development Ivana: Offline, Ali. Root and Geant 4 Matthias: HLT, Vc (SIMD types), Qt/KDE background, C++ committee work ▶ Vasco: DAQ, front-end applications and control software development ▶ ▶ ▶ A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 3

ALICE O 2 C++ coding conventions: why? ▶ O 2 as a fresh start

ALICE O 2 C++ coding conventions: why? ▶ O 2 as a fresh start ▶ However, contributions from many coders used to different conventions ▶ Need to ensure uniformity ▶ Need to adopt common conventions A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 4

ALICE O 2 C++ coding conventions: decision ▶ ▶ Google C++ coding guidelines as

ALICE O 2 C++ coding conventions: decision ▶ ▶ Google C++ coding guidelines as starting point Widely used conventions taken into account Herb Sutter and Stroustrup’s guidelines considered C++11 features ▶ Big effort invested The result is different from both Google and Ali. Root A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 5

ALICE O 2 C++ coding conventions The documents Two documents: ▶ Coding style https:

ALICE O 2 C++ coding conventions The documents Two documents: ▶ Coding style https: //atelesca. web. cern. ch/atelesca/naming_formatting/cppguide. xml Git: https: //git. cern. ch/web/alice-o 2 -cwg 2. git/shortlog/refs/heads/naming_formatting ▶ Naming ▶ Formatting ▶ Comments ▶ Coding guidelines https: //atelesca. web. cern. ch/atelesca/coding_guidelines/cppguide. xml Git: https: //git. cern. ch/web/alice-o 2 -cwg 2. git/shortlog/refs/heads/coding_guidelines A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 6

Coding style Goal A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014

Coding style Goal A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 7

Coding style Naming and formatting A. Telesca | CWG 2 Tools, guidelines and procedures

Coding style Naming and formatting A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 8

Coding style Highlights ▶ Naming ▶ Files ▶ Variables ▶ Functions ▶ Formatting ▶

Coding style Highlights ▶ Naming ▶ Files ▶ Variables ▶ Functions ▶ Formatting ▶ Line length ▶ Classes A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 9

Code style Naming: General A. Telesca | CWG 2 Tools, guidelines and procedures |

Code style Naming: General A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 10

Code style Naming: Files A. Telesca | CWG 2 Tools, guidelines and procedures |

Code style Naming: Files A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 11

Code style Naming: Variables A. Telesca | CWG 2 Tools, guidelines and procedures |

Code style Naming: Variables A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 12

Code style Naming: Functions A. Telesca | CWG 2 Tools, guidelines and procedures |

Code style Naming: Functions A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 13

Coding style Formatting: Line length and classes A. Telesca | CWG 2 Tools, guidelines

Coding style Formatting: Line length and classes A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 14

Coding guidelines Goal A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014

Coding guidelines Goal A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 15

Coding guidelines A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 16

Coding guidelines A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 16

Coding guidelines Highlights ▶ Namespaces: ▶ General and std ▶ Scoping: ▶ Variables and

Coding guidelines Highlights ▶ Namespaces: ▶ General and std ▶ Scoping: ▶ Variables and Brace initialization ▶ Global variables ▶ Classes: ▶ Initialization ▶ Others: ▶ Exceptions A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 17

Coding guidelines Namespaces: general and std A. Telesca | CWG 2 Tools, guidelines and

Coding guidelines Namespaces: general and std A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 18

Coding guidelines Namespaces: using declarations and directives A. Telesca | CWG 2 Tools, guidelines

Coding guidelines Namespaces: using declarations and directives A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 19

Coding guidelines Scoping A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014

Coding guidelines Scoping A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 20

Coding guidelines A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 21

Coding guidelines A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 21

Coding guidelines Classes: Initialization A. Telesca | CWG 2 Tools, guidelines and procedures |

Coding guidelines Classes: Initialization A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 22

Coding guidelines A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 23

Coding guidelines A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 23

Coding guidelines Others A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014

Coding guidelines Others A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 24

Feedback ▶ Received feedback/questions about: ▶ ▶ ▶ Templates STL usage Exceptions Threads Dependencies

Feedback ▶ Received feedback/questions about: ▶ ▶ ▶ Templates STL usage Exceptions Threads Dependencies A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 25

Conclusion ▶ Lots of work and dedication ▶ This guide can be adapted following

Conclusion ▶ Lots of work and dedication ▶ This guide can be adapted following the usage of the C++ language that best suits the needs of the O 2 software. ▶ Your feedback will be considered for the next iterations of the document. A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 26

Questions ? A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 27

Questions ? A. Telesca | CWG 2 Tools, guidelines and procedures | 21/03/2014 27