GAE/Coding Conventions

From MegaGlest
Revision as of 05:57, 24 March 2011 by Hofmic (talk) (Removed one extra br)
Jump to: navigation, search
This article or section may be outdated.
Reason: Required information on GIT (SVN section removed)
You can edit this page to improve it.


These conventions only apply to new code. It is recommended to not spend time modifying existing, working code.

Setters/Mutators

should be in the form of:

void setMyAttribute(type v) {myAttribute = v;}

as opposed to

void setMyAttribute(type myAttribute) {this->myAttribute = myAttribute;}

Code Organisation

  • Don't create 'objects of convenience'. It creates tight coupling which makes it harder to maintain. Example:
Unit = noun
Update = verb
"UnitUpdater" = noun + verb + 'er'

The 'er' makes the whole thing a noun again, but it's artificial... there shouldn't be a 'UnitUpdater', we have a 'Unit', and it has an 'update' method.

Platform Support

Glest officially supports Linux (through Jam build) and Windows (through MS VC++). When writing code try to keep this in mind.

Debug #defines

For the DEBUG code, we decided on a DEBUG_AREA_SUBAREA type system (where _SUBAREA is optional). For general code use _DEBUG as normal. They can be defined in the config or in a header file.

Example:

General stuff in DEBUG_GUI, and more specific ( or in particular, time consuming asserting functions ) in something more specific.

Style

  • Use tabs instead of spaces for indentation.
  • Try to stay consistent with surrounding code.

Example

class ClassName {
public:
   ClassName( int param );
   /*
    * doxygon comments
    */
   void function( int param1, int param2, int param3 );
};

ClassName::ClassName( int param )
       : super()
       , variable( param ) {
   // body of constructor
   doSomething();
}

if ( conditiontest ) {
   int x = 1, y = 2, z;
   z = x + y;
   ClassName test( z );
   test.function( x, y, z );
}