A strict camel case would have this reader be named ``BufferedIntReader`` or ``IntBufferedReader``, but this has some shortcomings. By pushing the "variant" part of the naming to the end with ``BufferedReader_Int`` and ``BufferedReader_Dbl``, we get good, automatic sorting of the classes. This helps in editors and in documentation: *lexically similar implies logically similar*. Now, imagine what happens when we get around to templating the BufferedReader.
```c++
template<typenameT>
classBufferedReader{
//contents
};
typedefBufferedReader<int>BufferedReader_Int;
typedefBufferedReader<double>BufferedReader_Dbl;
```
The typedefs mirror the templating syntax and can always be made fairly straightforwardly, as opposed to trying to figure out where to put the "Int", i.e. is it "BufferedIntReader" or "IntBufferedReader". With multiple template parameters it gets even more hairy, but the _ syntax, simply leads to ``typedef std::map<std::string,int> Map_Str_Int``.
## Defining Word Boundaries
...
...
@@ -72,7 +79,7 @@ With those definitions in mind, let's define a set of word conventions. The main
* regex: ``<VAR>``=``<SNAKE>``
2. classes
1.``CLASS`` class name
* description: standard CamelCase used for most classes, avoid abbreviations, for acronyms capitalize first, e.g. ORIGEN-->Origen or IO-->Io, MG-->Mg, CE-->Ce
* description: standard CamelCase used for most classes, avoid abbreviations, for acronyms capitalize first, e.g. ORIGEN->Origen or IO->Io, MG->Mg, CE->Ce
* regex: ``<CLASS>``=``<UCAMEL>``
* e.g. ``NuclideSet``, ``Nexus``, ``LibraryIo``, ``CeResourceFile``
2.``CLASSMETHOD``class method
...
...
@@ -112,15 +119,19 @@ The goal for Fortran is to as closely as possible mirror the C++ rules. The only