Here are our C# coding standards, naming conventions, and best practices. |
1. Naming Conventions and Style
do use PascalCasing for class names and method names.
public class ClientActivity
{ public void ClearStatistics()
{ //... }
public void CalculateStatistics()
{ //... }
}
do use camelCasing for method arguments and local variables.
public class UserLog
{ public void Add(LogEvent logEvent)
{ int itemCount = logEvent.Items.Count; // ... }
}
do not use Hungarian notation or any other type identification in identifiers
// Correct int counter; string name; // Avoid int iCounter; string strName; do not use Screaming Caps for constants or readonly variables
// Correct public static const string ShippingType = "DropShip";
// Avoid public static const string SHIPPINGTYPE = "DropShip";
avoid using Abbreviations. Exceptions: abbreviations commonly used as names,
such as Id, Xml, Ftp, Uri
// Correct UserGroup userGroup; Assignment employeeAssignment; // Avoid UserGroup usrGrp; Assignment empAssignment; // Exceptions CustomerId customerId; XmlDocument xmlDocument; FtpHelper ftpHelper; UriPart uriPart; do use PascalCasing for abbreviations 3 characters or more (2 chars are both uppercase)
HtmlHelper htmlHelper; FtpTransfer ftpTranfer; UIControl uiControl; do not use Underscores in identifiers. Exception: you can prefix private static variables
with an underscore.
// Correct public DateTime clientAppointment;
public TimeSpan timeLeft;
// Avoid public DateTime client_Appointment;
public TimeSpan time_Left;
// Exception private DateTime _registrationDate;
do use predefined type names instead of system type names like Int16, Single, UInt64, etc
// Correct string firstName; int lastIndex; bool isSaved; // Avoid String firstName; Int32 lastIndex; Boolean isSaved; do use implicit type var for local variable declarations. Exception: primitive types (int, string,
double, etc) use predefined names.
var stream = File.Create(path);
var customers = new Dictionary<int?, Customer>();
// Exceptions int index = 100; string timeSheet; bool isCompleted; do use noun or noun phrases to name a class.
public class Employee
{ }
public class BusinessLocation
{ }
public class DocumentCollection
{ }
do prefix interfaces with the letter I. Interface names are noun (phrases) or adjectives.
public interface IShape
{ }
public interface IShapeCollection
{ }
public interface IGroupable
{ }
do name source files according to their main classes. Exception: file names with partial classes
reflect their source or purpose, e.g. designer, generated, etc.
// Located in Task.cs public partial class Task
{ //... }
// Located in Task.generated.cs public partial class Task
{ //... }
do organize namespaces with a clearly defined structure
// Examples namespace Company.Product.Module.SubModule namespace Product.Module.Component namespace Product.Layer.Module.Group do vertically align curly brackets.
// Correct class Program
{ static void Main(string[] args)
{ }
}
do declare all member variables at the top of a class, with static variables at the very top.
// Correct public class Account
{ public static string BankName;
public static decimal Reserves;
public string Number {get; set;}
public DateTime DateOpened {get; set;}
public DateTime DateClosed {get; set;}
public decimal Balance {get; set;}
// Constructor public Account() { // ... }
}
do use singular names for enums. Exception: bit field enums.
// Correct public enum Color
{ Red,
Green,
Blue,
Yellow,
Magenta,
Cyan
}
// Exception [Flags] public enum Dockings
{ None = 0,
Top = 1,
Right = 2,
Bottom = 4,
Left = 8
}
do not explicitly specify a type of an enum or values of enums (except bit fields)
// Don't public enum Direction : long
{ North = 1,
East = 2,
South = 3,
West = 4
}
// Correct public enum Direction
{ North,
East,
South,
West
}
do not suffix enum names with Enum
// Don't public enum CoinEnum
{ Penny,
Nickel,
Dime,
Quarter,
Dollar
}
// Correct public enum Coin
{ Penny,
Nickel,
Dime,
Quarter,
Dollar
}
Why: consistent with the Microsoft's .NET Framework and consistent with prior rule of no type indicators in identifiers.
Ref.:http://www.dofactory.com/reference/csharp-coding-standards.aspx

No comments:
Post a Comment