Coding standards

Guidelines
We follow standard C# coding guidelines unless otherwise stated:. Corrections to existing files to follow these standards are welcome.

Source Repository (SVN)

 * For new files execute: svn propset svn:eol-style native

Formatting

 * We put curly brackets on separate lines and use 4 space tabs.
 * Tab themselves should be spaces, not actual hard tabs.
 * Use string instead of String when refering to the System.String type.

Naming

 * We use full words to name things.
 * Aim for assosiative naming so that the logic is clear without explicit comments.

Classes
Unless the classes are very trivial, there should be one class per file.

public class SimpleExample {

}

Methods
Method names have all their words capitalized (as opposed to Java, which culturally uses camelCase).

public class SimpleExample {   public void ExampleMethod(int exampleAttribute) {       string exampleVariable = "test value"; } }

Fields
Fields should be always initialized when declared. Member fields start with m_ and continue in camelCase:

public class SimpleExample {   private long m_exampleMemberField = 0; private static double m_exampleStaticMemberField = 2;

public void ExampleMethod(int exampleAttribute) {       string exampleVariable = "test value"; } }

Warnings

 * Please keep the code warning free, using #pragma only if absolutely necessary. For instance

ASSET_TYPE_TO_EXTENSION[(sbyte)AssetType.Script]             = "_script.txt";   // Not sure if we'll ever see this
 * 1) pragma warning disable 0612
 * 1) pragma warning restore 0612

Logging
Each class should have their own logger which is declared private and is not inherited:

public class SimpleExample {   private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod.DeclaringType); }