Соглашения о написании прописными буквами
Примечание.
Это содержимое перепечатывается разрешением Pearson Education, Inc. из руководства по проектированию платформы: соглашения, идиомы и шаблоны для повторно используемых библиотек .NET, 2-го выпуска. Этот выпуск был опубликован в 2008 году, и книга с тех пор была полностью пересмотрена в третьем выпуске. Некоторые сведения на этой странице могут быть устаревшими.
В этой главе приведен простой метод использования прописных букв, который при единообразном применении повысит удобство чтения идентификаторов для типов, элементов и параметров.
Правила использования прописных букв в идентификаторах
Чтобы различать слова в идентификаторе, делайте прописной первую букву каждого слова в идентификаторе. Не используйте знаки подчеркивания для различения слов, а также в целом в идентификаторах. Существует два способа использования прописных букв в идентификаторах в зависимости от назначения идентификатора.
PascalCasing
camelCasing
Соглашение PascalCasing, используемое для всех идентификаторов, кроме имен параметров, заключается в том, что прописной делается первая буква каждого слова (включая акронимы длиной более двух букв), как показано в примерах ниже.
PropertyDescriptor
HtmlTag
Для акронимов с двумя буквами используется особый случай — буквы пишутся прописными, как показано в следующем идентификаторе:
IOStream
Соглашение camelCasing, используемое только для имен параметров, заключается в том, что прописным делается первый символ каждого слова, кроме первого слова, как показано в примерах ниже. Кроме того, как показано в примере, акронимы из двух букв, с которых начинается идентификатор, названный в соответствии с этим соглашением, пишутся в нижнем регистре полностью.
propertyDescriptor
ioStream
htmlTag
✔️ Используйте PascalCasing для всех имен открытых элементов, типов и пространств имен, состоящих из нескольких слов.
✔️ Используйте camelCasing для имен параметров.
В следующей таблице описаны правила написания прописными буквами для различных типов идентификаторов.
Идентификатор | Регистр | Пример |
---|---|---|
Пространство имен | Pascal | namespace System.Security { ... } |
Тип | Pascal | public class StreamReader { ... } |
Интерфейс | Pascal | public interface IEnumerable { ... } |
Способ | Pascal | public class Object { public virtual string ToString(); } |
Свойство | Pascal | public class String { public int Length { get; } } |
Событие | Pascal | public class Process { public event EventHandler Exited; } |
Поле | Pascal | public class MessageQueue { public static readonly TimeSpan InfiniteTimeout; } public struct UInt32 { public const Min = 0; } |
Значение перечисления | Pascal | public enum FileMode { Append, ... } |
Параметр | "верблюжий" стиль. | public class Convert { public static int ToInt32(string value); } |
Написание прописных букв в составных словах и распространенных терминах
Большинство составных терминов рассматриваются как отдельные слова.
❌ НЕ используйте прописные буквы в каждом слове так называемых составных слов закрытой формы.
Это составные слова, которые пишутся как слитное слово, например "endpoint". При учете регистра такие слова следует считать одним словом. Используйте актуальный словарь, чтобы определить, написано ли составное слово в закрытой форме.
Pascal | "верблюжий" стиль. | Not |
---|---|---|
BitFlag |
bitFlag |
Bitflag |
Callback |
callback |
CallBack |
Canceled |
canceled |
Cancelled |
DoNot |
doNot |
Don't |
Email |
email |
EMail |
Endpoint |
endpoint |
EndPoint |
FileName |
fileName |
Filename |
Gridline |
gridline |
GridLine |
Hashtable |
hashtable |
HashTable |
Id |
id |
ID |
Indexes |
indexes |
Indices |
LogOff |
logOff |
LogOut |
LogOn |
logOn |
LogIn |
Metadata |
metadata |
MetaData, metaData |
Multipanel |
multipanel |
MultiPanel |
Multiview |
multiview |
MultiView |
Namespace |
namespace |
NameSpace |
Ok |
ok |
OK |
Pi |
pi |
PI |
Placeholder |
placeholder |
PlaceHolder |
SignIn |
signIn |
SignOn |
SignOut |
signOut |
SignOff |
UserName |
userName |
Username |
WhiteSpace |
whiteSpace |
Whitespace |
Writable |
writable |
Writeable |
Чувствительность к регистру
Языки, которые могут выполняться в среде CLR, не обязательно должны учитывать регистр, хотя у некоторых такая поддержка есть. Даже если у вашего языка есть поддержка, у других языков, которые могут получить доступ к вашей платформе, ее может не быть. Поэтому API, доступ к которым осуществляется извне, не могут полагаться только на регистр для различения двух имен в одном контексте.
❌ НЕ следует рассчитывать на то, что все языки программирования учитывают регистр. Это не так. Нельзя использовать имена, отличающиеся только регистром.
Фрагменты: © Корпорация Майкрософт (Microsoft Corporation), 2005, 2009. Все права защищены.
Перепечатано с разрешения Pearson Education, Inc. из книги Инфраструктура программных проектов. Соглашения, идиомы и шаблоны для многократно используемых библиотек .NET (2-е издание), авторы: Кржиштоф Цвалина (Krzysztof Cwalina) и Брэд Абрамс (Brad Abrams). Книга опубликована 22 октября 2008 г. издательством Addison-Wesley Professional в рамках серии, посвященной разработке для Microsoft Windows.