Coding standards
From OpenSimulator
(Difference between revisions)
												
			m  | 
			 (→Source Repository (SVN))  | 
			||
| Line 7: | Line 7: | ||
=== Source Repository (SVN) ===  | === Source Repository (SVN) ===  | ||
| − | * For new files execute: svn propset svn:  | + | * For new files execute: svn propset svn:eol-style native <file path>  | 
=== Formatting ===  | === Formatting ===  | ||
Revision as of 04:13, 25 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);
}