Naming Conventions

Namespaces

All lowercase; words separated with underscores; no prefix (e.g., pas, cdm_utils). Match the executable, library, or plug-in base name (e.g., libfoo.so –> namespace foo).

Classes and C++ Structs

Mixed case; first letter uppercase (e.g., SimpleEvent, QEdge, PointVector). Do not use a prefix. If the class is derived and will include the base class name, then append the base class name (e.g., SimpleEvent –> TimedSimpleEvent). struct should only be used in C++ to describe very simple data structures that have no methods.

Class Methods

Mixed case; first letter lowercase (e.g., writeToSocket(), drawPolygon()). Simple accessors are get + the variable name, e.g. scale = myObject.getScale(); Simple mutators are set + the variable name, e.g. myObject.setScale(scale); Methods that hand over the ownership of their result are take + the variable name (e.g., theObjPtr = theObjectContainer.takeMatch(theTarget);)

Class Instance Variables

Mixed case; always prefixed by m (e.g., mQedgeId, mSocket)

Class Static Variables

Mixed case; always prefixed by s (e.g., sQedgeHandle, sSingleton)

Local Variables and Function Parameters

Use mixed case with an initial lowercase (e.g., index, polygonColor, userName, theCurrentMessage, aWidth)

Constants (via #define)

All uppercase; words separated by underscores. If not in a namespace or local to a body file, then prefixed with the library name in all caps (e.g., RADIX, ADB_ERROR_OK).

Enumeration Names

Mixed case; first letter uppercase (e.g., Status, Color)

Enumeration Values

Same as constants; all uppercase; words separated by underscores (e.g., FAILURE, SUCCESS)

C++ typedefs

Mixed case; first letter uppercase (e.g., IntList, VectorRef) Do not use a prefix.

Templates

Classes, methods, and functions follow the conventions of their non-template counterparts.

Global C++ Variables

Mixed case; always prefixed by g (e.g., gRegistry). In general, try to use class static data instead of globals in C++.

Global C++ Functions

Mixed case; always prefixed by g (e.g., gFunc()). In general, try to use class static members instead of global functions in C++.

Booleans

When naming boolean functions and variables, use names that read as a condition. E.g:

if (isFull(bucket)) { ... }
if (bucketIsFull) { ... }

Macros

Macros should be avoided unless there is no alternative. But if they are needed, they should be fully uppercase with words separated by underscores. If not local to a body file, then they should be prefixed with the library name in all caps (e.g., WAD_SURFACE_COUNT(wad))