Coding standards

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
m (Guidelines)
m
Line 4: Line 4:
  
 
<b>We follow standard C# coding guidelines unless otherwise stated: [http://msdn.microsoft.com/en-us/library/czefa0ke.aspx]</b>
 
<b>We follow standard C# coding guidelines unless otherwise stated: [http://msdn.microsoft.com/en-us/library/czefa0ke.aspx]</b>
 +
 +
=== Source Repository (SVN) ===
 +
 +
* For new files execute: svn propset svn:eol_style native <file path>
  
 
=== Formatting ===
 
=== Formatting ===

Revision as of 10:37, 14 January 2009

Contents

Guidelines

When adding to existing code please respect the conventions already being used in the file you're editing. Even if they conflict conventions in this page. If you correct a convention in a file please discuss it first with other contributors of the file and fix the entire file at once.

We follow standard C# coding guidelines unless otherwise stated: [1]

Source Repository (SVN)

  • For new files execute: svn propset svn:eol_style native <file path>

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 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
#pragma warning disable 0612
           ASSET_TYPE_TO_EXTENSION[(sbyte)AssetType.Script]              = "_script.txt";   // Not sure if we'll ever see this
#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);
}
Personal tools
General
About This Wiki