GENERAL
-------
Use real tabs that equal 4 spaces.
Use typically trailing braces everywhere (if,else, functions, structures, typedefs, class definitions, etc.)
if ( x ) {
}
The else statement starts on the same line asthe last closing brace.
if ( x ) {
} else {
}
Pad parenthesized expressions with spaces
if ( x ) {
}
Instead of 
if (x) {
}
And
x = ( y * 0.5f );
Instead of
x = (y * 0.5f);
Use precision specification for floating pointvalues unless there is an explicit need for a double.
float f = 0.5f;
Instead of
float f = 0.5;
And
float f = 1.0f;
Instead of
float f = 1.f;
Function names start with an upper case:
void Function( void );
In multi-word function names each word startswith an upper case:
voidThisFunctionDoesSomething( void );
The standard header for functions is:
/*
====================
FunctionName
  Description
====================
*/
Variable names start with a lower casecharacter.
float x;
In multi-word variable names the first wordstarts with a lower case character and each successive word startswith an upper case.
floatmaxDistanceFromPlane;
Typedef names use the same naming convention as variables, howeverthey always end with "_t".
typedef intfileHandle_t;
Struct names use the same naming convention as variables, howeverthey always end with "_t".
struct renderEntity_t;
Enum  names use the same naming convention asvariables, however they always  end with  "_t". The enumconstants use all upper case characters.  Multiple words are separatedwith an underscore.
enum contact_t {
	CONTACT_NONE,
	CONTACT_EDGE,
	CONTACT_MODELVERTEX,
	CONTACT_TRMVERTEX
};
Names of recursive functions end with "_r"
void WalkBSP_r( intnode );
Defined names use all upper case characters.Multiple words are separated with an underscore.
#define SIDE_FRONT		0
Use ‘const’ as much as possible.
Use:
const int *p;			//pointer to const int
int * const p;			//const pointer to int
const int * constp;	// const pointer to const int
Don’t use:
int const *p;
CLASSES
-------
The standard header for a class is:
/*
===============================================================================
	Description
===============================================================================
*/
Class names start with "id" and each successive wordstarts with an upper case.
class idVec3;
Class variables have the same naming conventionas variables.
class idVec3 {
	float		x;
float		y;
float		z;
}
Class methods have the same naming conventionas functions.
class idVec3 {
	float		Length( void )const;
}
Indent  the names of class variables and classmethods to make nice columns. The  variable type or method return typeis in the first column and the  variable name or method name is in thesecond column.
class idVec3 {
	float		x;
float		y;
float		z;
	float		Length( void )const;
	const float*	ToFloatPtr( void ) const;
}
The * of the pointer is in the first columnbecause it improves readability when considered part of the type.
Ording of class variables and methods should beas follows:
- list of friend	classes 
- public variables 
- public methods 
- protected	variables 
- protected methods 
- private variables 
- private methods 
This allows the publicinterface to be easily found at the beginning of the class.
Always make class methods ‘const’ when theydo not modify any class variables.
Avoid  use of ‘const_cast’.  When object isneeded to be modified, but only  const versions are accessible, createa function that clearly gives an  editable version of the object. This keeps the control of the  ‘const-ness’ in the hands of theobject and not the user.
Return  ‘const’ objects unless the generalusage of the object is to change its  state.  For example, mediaobjects like idDecls should be const to a  majority of the code, whileidEntity objects tend to have their state  modified by a variety ofsystems, and so are ok to leave
non-const.
Function overloading should be avoided in mostcases.  For example, instead of:
	const idAnim*	GetAnim( int index ) const;
	const idAnim*	GetAnim( const char *name ) const;
	const idAnim*	GetAnim( float randomDiversity ) const;
Use:
	const idAnim*	GetAnimByIndex( int index ) const;
	const idAnim*	GetAnimByName( const char *name ) const;
	const idAnim*	GetRandomAnim( float randomDiversity ) const;
Explicitly  named functions tend to be lessprone to programmer error and  inadvertent calls to functions due towrong data types being passed in as  arguments.  Example:
Anim = GetAnim( 0 );
This could be meant as a call to get arandom animation, but the compiler would interpret it as a call toget one by index.
Overloading functions for the sake of adding‘const’ accessible function is allowable:
class idAnimatedEntity: public idEntity {
idAnimator* 		GetAnimator( void );
constidAnimator * 	GetAnimator( void ) const;
};
In  this case, a const version of GetAnimatorwas provided in order to allow  GetAnimator to be called from constfunctions.  Since idAnimatedEntity  is normally a non-const object,this is allowable.  For a media type,  which is normally const,operator overloading should be avoided:
classidDeclMD5 : public idDecl {
constidMD5Anim *	GetAnim( animHandle_t handle ) const;
idMD5Anim*		GetEditableAnim( animHandle_t handle );
};
id Studio Names
---------------
id<name>Dlg      // dialog class
id<name>Ctrl    // dialog control class
id<name>Frm     // frame window
id<name>View    // view window
id<name>         //any other class
FILE NAMES
---------
Each class should be in a seperate source fileunless it makes sense to group several smaller classes.
The file name should be the same as the name ofthe class without the "id" prefix. (Upper/lower case ispreserved.)
class idWinding;
files:
Winding.cpp
Winding.h
When  a class spans across multiple files thesefiles have a name that starts  with the name of the class without"id", followed by an underscore and a  subsection name.
class idRenderWorld;
files:
RenderWorld_load.cpp
RenderWorld_demo.cpp
RenderWorld_portals.cpp
When  a class is a public virtual interface to asubsystem the public  interface is implemented in a header file withthe name of the class  without "id". The definition of theclass that implements the subsystem  is placed in a header file withthe name of the class without "id" and  ends with"_local.h". The implementation of the subsystem is placedin a  cpp file with the name of the class without "id".
class idRenderWorld;
RenderWorld.h			//public virtual idRenderWorld interface
RenderWorld_local.h		//definition of class idRenderWorldLocal
RenderWorld.cpp		//implementation of idRenderWorldLocal