Правила іменування C # для скорочень


75

Щодо іменування C # для скорочень, якщо я писав бібліотеку, пов’язану з Windows API, чи існує якась сувора конвенція щодо WindowsApi або WindowsAPI, чи це лише особисті переваги?

Відповіді:


81

Існує домовленість, і вона визначає початкові великі літери, решта малі регістри, для всіх скорочень, що мають більше 2 символів. Звідси HttpContextі ClientID.


29
Id - краща капіталізація. "Два інших терміни, які є загальновживаними, самі по собі належать до категорії, оскільки вони є загальноприйнятими жаргонними скороченнями. Два слова" Ok "та" Id "(і їх слід вводити, як показано) є винятками із настанови, що у назвах слід використовувати скорочення ". "Рекомендації щодо каркасного проектування" 2-е видання, с.44.
Сергій Тепляков

35
Хтось зазначив, що якби ідентифікатор означав "Ідентифікаційна дата" (а не "Ідентифікатор"), ідентифікатор знову був би в порядку. Вибачте, ще раз добре.
peterchen

3
@Sergey Teplyakov Керівні принципи корпорації Майкрософт говорять про використання Pascal лише для скорочень більше 2 символів. У випадку з ідентифікатором і нормально, всі обмеження в порядку, однак HTML стає HTML. msdn.microsoft.com/en-us/library/141e06ef(v=VS.71).aspx
smdrager

6
@smdrager: чесно кажучи, це явно рекомендується лише для скорочень, а не скорочень.
Девід Гедлунд,

7
Можна зазначити, що самі Microsoft не дуже чітко дотримуються цієї конвенції. Наприклад, вони в деяких місцях використовують контекст Db, а в інших - DB Null.
Том Пажурек

46

" Рекомендації щодо каркасного дизайну ", друге видання Кшиштофа Кваліни та Бреда Абрамса, с.40-42

3.1.2 Великі абревіатури

ЗАПИСАТИ обидва символи з двознакових скорочень, за винятком першого слова ідентифікатора верблюда.

System.IO
public void StartIO(Stream ioStream)

ЗАПИСАТИ великі літери лише першого символу абревіатур із трьома або більше символами, за винятком першого слова ідентифікатора у верблюдах.

System.Xml
public void ProcessHtmlTag(string htmlTag)

НЕ пишіть літери будь-яких символів будь-яких абревіатур, незалежно від їх довжини, на початку ідентифікатора у верблюдах.


3
У мене завжди болить голова, якщо я бачу це дивне правило "скоротити великі літери з двох літер". Схоже, Microsoft зрозуміла, що System.IO назвали неправильно і вирішили скласти правило навколо нього. Але як назвати ідентифікатор Microsoft Visual Studio? MSVSID? Я кажу, MsVsId був би набагато кращим / більш послідовним.
Йохан

На жаль, вони не дотримуються власних конвенцій щодо імен. Подивіться на використання Dto в цій статті: docs.microsoft.com/en-us/aspnet/web-api/overview/data/…
ataravati

Хтось знає, чому на Землі виникло правило з 2 літер? Які аргументи стоять за цим?
rory.ap

@ rory.ap - Я думаю, що це випливає з порад із Чиказького посібника стилю від 20 років тому. Я пам’ятаю, як бачив це у друкованому вигляді, який раніше писав технічний письменник, але не мав уявлення, чи все ще там. Також, можливо, щоб уникнути суперечливого значення слова "Id", яке сьогодні може здатися незрозумілим, насправді було невеликою частиною поп-культури en.wikipedia.org/wiki/I_Got_Id
StingyJack

16

Ознайомтеся з офіційними документами корпорації Майкрософт щодо правил іменування та умов використання великих літер :

Щоб розрізнити слова в ідентифікаторі, слід писати велику літеру кожного слова в ідентифікаторі. Не використовуйте символи підкреслення для розрізнення слів або, що стосується цього, де-небудь в ідентифікаторах. Залежно від використання ідентифікатора можна використовувати два відповідні способи написання великих літер:

  • PascalCasing
  • верблюжча оболонка

PascalCasing конвенції, використовується для всіх ідентифікаторів , за винятком імен параметрів, капіталізує перший символ кожного слова ( в тому числі скорочень більше двох букв в довжину), як показано в наступних прикладах:

  • PropertyDescriptor
  • HtmlTag

Особливий випадок наведено для абревіатур із двох літер, у яких обидві літери пишуться з великої літери, як показано в наступному ідентифікаторі:

  • IOStream

CamelCasing конвенції, використовується тільки для імен параметрів, з великої літери кожного слова , крім першого слова, як показано в наступних прикладах. Як приклад також показує, двобуквені абревіатури, що починають ідентифікатор верблюда, мають обидві літери.

  • propertyDescriptor
  • ioStream
  • htmlTag

ВИКОРИСТОВУЙТЕ PascalCasing для всіх загальнодоступних імен членів, типів та простору імен, що складаються з декількох слів.

НЕ використовуйте camelCasing для імен параметрів.


4
Цей документ призначений для .NET 1.1.
Daniel A. White

8
Не бачу, яка різниця? Це не схоже на те, що вони змінювали правила між кожною версією чи чимсь іншим.
Скурмедель

2
Там є другим виданням книги Керівництва по проектуванню. Я не порівнював, щоб визначити, що ніяких змін в іменуванні взагалі не відбувається.
Джон Сондерс,

2
Вказівки щодо .NET 4.5 щодо використання великих
grahamesd

2
Практика Microsoft змінювалася з часом. - Хоч і тонко. - Як зазначали інші, "DBNull" із .NET 1.1 проти "DbContext" у .NET 4.5.
BrainSlugs83,

12

Старе питання, нова відповідь.

Відповідно до .NET 4 Правила використання великих літер для скорочень :

Набирайте великі літери обома символами двосимвольних абревіатур, окрім першого слова ідентифікатора верблюда.

Властивість з іменем DBRateє прикладом короткої абревіатури ( DB), яка використовується як перше слово ідентифікатора, обкладеного Паскалем. Іменований параметр ioChannelє прикладом короткої абревіатури ( IO), яка використовується як перше слово ідентифікатора, що знаходиться у верблюдах.

Пишіть великі літери лише першим символом абревіатур із трьома або більше символами, крім першого слова ідентифікатора верблюдів.

Клас з іменем XmlWriterє прикладом довгої абревіатури, що використовується як перше слово ідентифікатора, обкладеного Паскалем. Іменований параметр htmlReader є прикладом довгої абревіатури, що використовується як перше слово ідентифікатора, що тримається на верблюдах.

Не використовуйте великі літери будь-яких символів будь-яких абревіатур, незалежно від їх довжини, на початку ідентифікатора у верблюдах.

Іменований параметр xmlStreamє прикладом довгої абревіатури ( xml), яка використовується як перше слово ідентифікатора, що знаходиться у верблюдах. Іменований параметр dbServerNameє прикладом короткої абревіатури ( db), яка використовується як перше слово ідентифікатора, що знаходиться у верблюдах.


8

Я чув, що вам слід уникати скорочень, щоб тоді це стало WindowsApplicationProgrammingInterface.

Більш серйозно (здається, люди неправильно читають вище, незважаючи на цитату нижче), на цій сторінці сказано:

Будь-які абревіатури з трьох або більше букв мають бути регістром Pascal, а не всі великі літери.

Оскільки API вважається загальновідомою абревіатурою, ім’я WindowsApiслід вибрати, якщо ви хочете слідувати інструкціям.


5
Абревіатури прийнятні, якщо вони добре відомі в межах домену. API добре відомий у програмуванні.
Джон Сондерс,

+1. Книга "Основні принципи роботи" рекомендує уникати скорочень або скорочень або використовувати PascalCase. Я б запропонував WindowsApi. Приклад із фреймворку: Uri, UriBuilder HtmlDecode.
Скурмедель

1
@ Джон: Так, я був трохи язиком у цьому. :)
розслабтесь

@unwind - чи означає це, що ми можемо використовувати html замість HyperTextMarkupLanguage?
Ларрі Ватанабе

-1: з керівних принципів проектування Framework: "Загалом, важливо уникати використання абревіатур в іменах ідентифікаторів, якщо вони не є загальновживаними та зрозумілими для тих, хто може використовувати фреймворк. Наприклад, HTML, XML та IO є всі добре зрозумілі, але менш відомих скорочень однозначно слід уникати ". API - загальновживане та зрозуміле скорочення скорочення.
Сергій Тепляков

4

Це все лише особисті (або організаційні) переваги. Поки ви послідовні, ви будете добре.

Сам .NET Framework використовував би WindowsApi.


Це. Щойно мав приклад, коли ділова абревіатура APP використовувалася як "Додаток" і тепер виглядає як абревіатура "Програма", а не як фактичне значення.
SierraOscar


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.