1. General
Any violation to the guide is allowed if it enhances readability.
2. Files
C++ header files should have extension *.hpp. Source files must have the extension *.cpp.
A class should be declared in a header file and defined in a source file where the name of the files should match the name of the class.
Header files must contain an include guard in a form JULIAN_(FILENAME)_HPP.
Include statements must be located at the top of a file only.
3. Classes, structures and enumerations
Names representing types must be in upper case notation (e.g. InterestRate, VolatilitySurface). Prefer to capitalize acronyms as single words (e.g. GslFunctionWrapper).
Name of class members should be named as ordinary variables, but with a trailing underscore.
Names representing methods should be verbs. Names of the methods must be written in lower case notation.
Use structures only for passive objects that carry data; everything else is a class.
Enumeration types should be named in upper-case notation. Individual enumerations should be named all upper-case.
4. Variables
Variable names must be in underscore notation (e.g. discounting_curve, pln_calendar etc.)
Variables with a large scope should have long names, variables with a small scope can have short names.