Полный текст документа: Скачать C # Стандарты кодирования и лучшие практики
Соглашения и стандарты именования
Примечание:
Термины Pascal Casing и Camel Casing используются в данном документе.
Pascal Casing - первый символ всех слов в верхнем регистре, а другие символы в нижнем регистре.
Пример: BackColor
Верблюжий корпус - Первый символ всех слов, кроме первого слова - это заглавные буквы, а остальные символы - строчные.
Пример: backColor
Использовать корпус Паскаля для имен классов
открытый класс HelloWorld
{
...
}
Использовать регистр Pascal для имен методов
void SayHello (имя строки)
{
...
}
Использовать верблюжий корпус для переменных и параметров метода
int totalCount = 0;
void SayHello (имя строки)
{
string fullMessage = "Hello" + name;
...
}
Используйте префикс «I» с Camel Casing для интерфейсов (Пример: IEntity)
Не используйте венгерскую нотацию для именования переменных.
В прежние времена большинству программистов это нравилось - иметь тип данных в качестве префикса для имени переменной и использовать m_ в качестве префикса для переменных-членов. Например:
string m_sName;
int nAge;
Однако в стандартах кодирования .NET это не рекомендуется. Использование типа данных и m_ для представления переменных-членов не должно использоваться. Все переменные должны использовать верблюжий корпус.
Некоторые программисты по-прежнему предпочитают использовать префикс m_ для представления переменных-членов, поскольку другого простого способа определения переменной-члена не существует.
- Используйте значимые, описательные слова для именования переменных. Не используйте сокращения.
Хорошо:
string address
int salary
Не хорошо:
string nam
string addr
int sal
- Не используйте имена переменных из одного символа, такие как i, n, s и т. Д. Используйте имена, такие как index, temp
Единственным исключением в этом случае будут переменные, используемые для итераций в циклах:
for ( int i = 0; i < count; i++ )
{
...
}
Если переменная используется только как счетчик для итерации и не используется где-либо еще в цикле, многим людям все еще нравится использовать одну переменную char (i) вместо того, чтобы придумывать другое подходящее имя.
Не используйте подчеркивания (_) для имен локальных переменных.
Все переменные-члены должны иметь префикс подчеркивания (_), чтобы их можно было идентифицировать из других локальных переменных.
Не используйте имена переменных, которые напоминают ключевые слова.
Префикс булевых переменных, свойств и методов с «is» или аналогичными префиксами.
Пример: приватный bool _isFinished
- Имена пространств имен должны соответствовать стандартному шаблону
...
- Используйте соответствующий префикс для элементов пользовательского интерфейса, чтобы вы могли идентифицировать их по остальным переменным.
Здесь рекомендуется 2 разных подхода.
а. Используйте общий префикс (ui_) для всех элементов пользовательского интерфейса. Это поможет вам сгруппировать все элементы интерфейса и легко получить доступ ко всем из них с помощью intellisense.
б. Используйте соответствующий префикс для каждого элемента пользовательского интерфейса. Краткий список приведен ниже. Поскольку в .NET есть несколько элементов управления, вам может потребоваться получить полный список стандартных префиксов для каждого из используемых вами элементов управления (включая элементы управления сторонних производителей).
Control Prefix
Label lbl
TextBox txt
DataGrid dtg
Button btn
ImageButton imb
Hyperlink hlk
DropDownList ddl
ListBox lst
DataList dtl
Repeater rep
Checkbox chk
CheckBoxList cbl
RadioButton rdo
RadioButtonList rbl
Image img
Panel pnl
PlaceHolder phd
Table tbl
Validators val
- Имя файла должно совпадать с именем класса.
Например, для класса HelloWorld имя файла должно быть helloworld.cs (или helloworld.vb)
Используйте Pascal Case для имен файлов.
Отступы и интервалы
Используйте TAB для отступа. Не используйте ПРОСТРАНСТВА. Определите размер вкладки как 4.
Комментарии должны быть на том же уровне, что и код (используйте тот же уровень отступа).
Хорошо:
// Format a message and display
string fullMessage = "Hello " + name;
DateTime currentTime = DateTime.Now;
string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();
MessageBox.Show ( message );
Не хорошо:
// Format a message and display
string fullMessage = "Hello " + name;
DateTime currentTime = DateTime.Now;
string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();
MessageBox.Show ( message );
Фигурные скобки ({}) должны находиться на том же уровне, что и код вне фигурных скобок.
Используйте одну пустую строку для разделения логических групп кода.
Хорошо:
bool SayHello ( string name )
{
string fullMessage = "Hello " + name;
DateTime currentTime = DateTime.Now;
string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();
MessageBox.Show ( message );
if ( ... )
{
// Do something
// ...
return false;
}
return true;
}
Не хорошо:
bool SayHello (string name)
{
string fullMessage = "Hello " + name;
DateTime currentTime = DateTime.Now;
string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();
MessageBox.Show ( message );
if ( ... )
{
// Do something
// ...
return false;
}
return true;
}
Должен быть один и только один пробеллиния между каждым методом внутри класса.
Фигурные скобки должны находиться на отдельной строке, а не на одной линии, как если бы и т. Д.
Хорошо:
if ( ... )
{
// Do something
}
Не хорошо:
if ( ... ) {
// Do something
}
- Используйте один пробел перед и после каждого оператора и скобок.
Хорошо:
if ( showResult == true )
{
for ( int i = 0; i < 10; i++ )
{
//
}
}
Не хорошо:
if(showResult==true)
{
for(int i= 0;i<10;i++)
{
//
}
}
Используйте #region для группировки связанных частей кода вместе.Если вы используете правильную группировку с использованием #region, странице должно понравиться это, когда все определения свернуты.
Храните закрытые переменные-члены, свойства и методы в верхней части файла, а открытые члены - вдно.