Обучение
Модуль
Напишите код, который проще читать, обновлять и поддерживать с помощью соглашений об именовании, комментариев и пустого пространства.
Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Идентификатор — это имя, которое вы назначаете типу (классу, интерфейсу, структуре, делегату или перечислению), члену, переменной или пространству имен.
Допустимые идентификаторы должны соответствовать этим правилам. Компилятор C# выдает ошибку для любого идентификатора, который не соответствует этим правилам:
_
).Можно объявить идентификаторы, соответствующие ключевым словам C#, с помощью префикса @
идентификатора.
@
не является частью имени идентификатора. Например, @if
объявляет идентификатор с именем if
. Эти дословные идентификаторы в основном предназначены для взаимодействия с идентификаторами, объявленными другими языками.
Полное определение допустимых идентификаторов см. в статье Идентификаторов в спецификации языка C#.
Важно!
спецификация языка C# допускает только букву (Lu, Ll, Lt, Lm или Nl), цифру (Nd), подключение (Pc), объединение (Mn или Mc) и категории форматирования (Cf). Все, что находится вне этого, автоматически заменяется с помощью _
. Это может повлиять на определенные символы Юникода.
Помимо правил, соглашения об именах идентификаторов используются во всех API .NET. Эти соглашения обеспечивают согласованность имен, но компилятор не применяет их. Вы свободны в использовании различных соглашений в ваших проектах.
По соглашению, в программах на C# PascalCase
используется для имен типов, пространств имен и всех общедоступных элементов. Кроме того, команда dotnet/docs
использует следующие соглашения, принятые из стиля программирования команды среды выполнения .NET:
Имена интерфейсов начинаются с I
заглавной буквы.
Типы атрибутов заканчиваются словом Attribute
.
Типы перечисления используют единственное существительное для нефлагов и множественное существительное для флагов.
Идентификаторы не должны содержать два последовательных символа подчеркивания (_
) . Эти имена зарезервированы для идентификаторов, созданных компилятором.
Используйте значимые и описательные имена для переменных, методов и классов.
Предпочитайте ясность вместо краткости.
Используйте PascalCase для имен классов и имен методов.
Используйте camelCase для параметров метода и локальных переменных.
Используйте PascalCase для имен констант, как полей, так и локальных констант.
Поля приватного экземпляра начинаются с подчеркивания (_
), а оставшийся текст оформлен в верблюжем регистре.
Статические поля начинаются с s_
. Это соглашение не является поведением Visual Studio по умолчанию, а также не частью рекомендаций по проектированию Framework, но настраивается в редакторе.
Избегайте использования аббревиаций или акронимов в именах, за исключением широко известных и принятых аббревиаций.
Используйте значимые и описательные пространства имен, которые соответствуют нотации обратного доменного имени.
Выберите имена сборок, представляющие основную цель сборки.
Избегайте использования однобуквенных имен переменных, за исключением простых счетчиков циклов. Кроме того, в примерах синтаксиса, описывающих синтаксис конструкций C#, часто используются следующие однобуквные имена, соответствующие соглашению, используемому в спецификации языка C#
S
для структур, C
для классов.M
для методов.v
для переменных, p
для параметров.r
для параметров ref
.Совет
Вы можете применять соглашения об именовании, касающиеся заглавных и строчных букв, префиксов, суффиксов и разделителей слов с помощью правил именования в стиле написания кода .
В следующих примерах рекомендации, относящиеся к элементам, обозначенным как public
, также применимы при работе с элементами protected
и protected internal
, которые должны быть видимы внешним вызывающим.
При именовании типа class
, interface
, struct
или delegate
используйте Pascal-регистр (PascalCasing).
public class DataService
{
}
public record PhysicalAddress(
string Street,
string City,
string StateOrProvince,
string ZipCode);
public struct ValueCoordinate
{
}
public delegate void DelegateType(string message);
При именовании interface
используйте регистр pascal в дополнение к префиксу имени с I
. Этот префикс четко указывает потребителям, что это interface
.
public interface IWorkerQueue
{
}
При именовании членов public
таких типов, как поля, свойства, события, используйте стиль ПаскальКейс. Кроме того, используйте pascal casing для всех методов и локальных функций.
public class ExampleEvents
{
// A public field, these should be used sparingly
public bool IsValid;
// An init-only property
public IWorkerQueue WorkerQueue { get; init; }
// An event
public event Action EventProcessing;
// Method
public void StartEventProcessing()
{
// Local function
static int CountQueueItems() => WorkerQueue.Count;
// ...
}
}
При написании позиционных записей используйте регистр pascal для параметров, так как они — общедоступные свойства записи.
public record PhysicalAddress(
string Street,
string City,
string StateOrProvince,
string ZipCode);
Для получения дополнительной информации о позиционных записях см. позиционный синтаксис для определения свойств.
При именовании полей private
или internal
используйте верблюжий стиль ("camelCasing") и добавляйте префикс _
. Используйте стиль CamelCase при именовании локальных переменных, включая экземпляры типа делегата.
public class DataService
{
private IWorkerQueue _workerQueue;
}
Совет
При редактировании кода C#, который следует этим соглашениям об именовании, в интегрированной среде разработки, поддерживающей автодополнение инструкций, ввод _
будет отображать всех членов области видимости объекта.
При работе с полями static
, которые private
или internal
, используйте префикс s_
, а для статических потоков — префикс t_
.
public class DataService
{
private static IWorkerQueue s_workerQueue;
[ThreadStatic]
private static TimeSpan t_timeSpan;
}
При написании параметров метода используйте регистр верблюда.
public T SomeMethod<T>(int someNumber, bool isValid)
{
}
Дополнительные сведения о соглашениях об именовании C#см. встиле программирования команды среды выполнения .NET.
Следующие рекомендации применяются к параметрам типа для параметров универсального типа. Параметры типа — это заполнители аргументов в универсальном типе или универсальном методе. Вы можете узнать больше о параметрах универсального типа в руководстве по программированию на C#.
Назначайте параметрам универсального типа описательные имена, если только односимвольное имя полностью не объясняет их значение, и описательное имя не добавит дополнительной ценности.
public interface ISessionChannel<TSession> { /*...*/ }
public delegate TOutput Converter<TInput, TOutput>(TInput from);
public class List<T> { /*...*/ }
рассмотрим использование T
в качестве имени параметра типа для типов с одним параметром типа буквы.
public int IComparer<T>() => 0;
public delegate bool Predicate<T>(T item);
public struct Nullable<T> where T : struct { /*...*/ }
Используйте префикс "T" для имен параметров описательного типа.
public interface ISessionChannel<TSession>
{
TSession Session { get; }
}
рассмотрим, указывающие ограничения, помещенные в параметр типа в имени параметра. Например, параметр, ограниченный ISession
, может назваться TSession
.
Правило анализа кода CA1715 можно использовать для обеспечения соответствующего именованности параметров типа.
Примеры, не содержащие с помощью директив, используйте квалификацию пространства имен. Если вы знаете, что пространство имен импортируется по умолчанию в проекте, вам не нужно полностью указать имена из этого пространства имен. Полные имена можно разделить после точки (.), если они слишком длинные для одной строки, как показано в следующем примере.
var currentPerformanceCounterCategory = new System.Diagnostics.
PerformanceCounterCategory();
Вам не нужно изменять имена объектов, созданных с помощью средств конструктора Visual Studio, чтобы они соответствовали другим рекомендациям.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Обучение
Модуль
Напишите код, который проще читать, обновлять и поддерживать с помощью соглашений об именовании, комментариев и пустого пространства.
Документация
Соглашения о кодировании .NET - C#
Узнайте о часто используемых соглашениях по программированию в C#. Соглашения о написании кода помогают сделать код единообразным, а также упрощают его копирование, изменение и обслуживание. В этой статье также содержатся рекомендации по программированию репозитория документации
Dis карта s — неназначенные переменные карта able - C#
В этой статье приведены сведения о поддержке в C# пустых переменных (переменных, которым не присваиваются значения) и описаны способы их использования.
Общие сведения о сопоставлении шаблонов - C#
Сведения о выражениях сопоставления шаблонов в C#