Coding standards
From OpenSimulator
(Difference between revisions)
m (Robot: Cosmetic changes) |
|||
(18 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
− | + | __NOTOC__ | |
+ | {{Quicklinks}} | ||
+ | <br /> | ||
+ | == Guidelines == | ||
+ | |||
+ | We follow standard C# coding guidelines unless otherwise stated: [http://msdn.microsoft.com/en-us/library/czefa0ke.aspx]. Corrections to existing files to follow these standards are welcome. | ||
+ | |||
+ | === 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. | * We put curly brackets on separate lines and use 4 space tabs. | ||
− | * Tab themselves should be spaces, not actual hard tabs. | + | * Tab themselves should be spaces, not actual hard tabs. |
− | * Method names have all their words capitalized (as opposed to Java, which culturally uses camelCase). | + | * 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. | ||
+ | |||
+ | <pre> | ||
+ | public class SimpleExample | ||
+ | { | ||
+ | |||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | === Methods === | ||
+ | |||
+ | Method names have all their words capitalized (as opposed to Java, which culturally uses camelCase). | ||
+ | |||
+ | <pre> | ||
+ | public class SimpleExample | ||
+ | { | ||
+ | public void ExampleMethod(int exampleAttribute) | ||
+ | { | ||
+ | string exampleVariable = "test value"; | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | === Fields === | ||
+ | |||
+ | Fields should be always initialized when declared. Member fields start with m_ and continue in camelCase: | ||
+ | |||
+ | <pre> | ||
+ | public class SimpleExample | ||
+ | { | ||
+ | private long m_exampleMemberField = 0; | ||
+ | private static double m_exampleStaticMemberField = 2; | ||
+ | |||
+ | public void ExampleMethod(int exampleAttribute) | ||
+ | { | ||
+ | string exampleVariable = "test value"; | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | === 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: | |
− | + | <pre> | |
− | + | public class SimpleExample | |
− | + | { | |
− | + | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | |
+ | } | ||
+ | </pre> | ||
− | + | [[Category:Standards]] |
Revision as of 19:52, 3 March 2012
Languages: |
English Deutsch |
Guidelines
We follow standard C# coding guidelines unless otherwise stated: [1]. Corrections to existing files to follow these standards are welcome.
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 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
#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); }