Корпус Pascal или Camel Casing для кода C#?

Я спорил с моими коллегами о корпусе Паскаля (верхний регистр) и нижнем Верблюд. Они используются для понижения верблюжьей оболочки для всего, от имен таблиц в базах данных SQL до именования свойств в коде C#, но мне больше нравится оболочка Паскаля, более низкая оболочка верблюда для переменных и оболочка Паскаля для свойств:

string firstName;
public string FirstName {
...
}

Но они к этому привыкли:

string _firstname;
public string firstName {
...
}

Я стараюсь не отставать от их «стандарта», поэтому код выглядит одинаково, но мне это просто не нравится.

Я видел, что, по крайней мере, платформа .NET использует это соглашение, и именно так я стараюсь сохранить свой код, например:

System.Console.WriteLine("string")

Что вы используете / предпочитаете и почему? Прошу прощения, если кто-то еще задал этот вопрос, но я искал и ничего не нашел.

Обновлять: Я привел пример метода, а не свойства, но это то же самое. Как я сказал в первом абзаце, мои коллеги используют соглашение Паскаля для всего (переменных, методов, имен таблиц и т. д.)

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
34
0
71 662
14
Перейти к ответу Данный вопрос помечен как решенный

Ответы 14

Я (и моя команда) предпочитаю зарезервировать начальные заглавные буквы для имен классов.

Почему? Я думаю, что стандарты Java распространяются.

Но разве это не заставляет меня каждый раз, когда я пишу код, думать о том, является ли это внутренний компонент, сторонний компонент или компонент фреймворка?

Chris Pitman 04.02.2010 00:25

@ChrisPitman Я знаю, что это старый комментарий, но больше всего меня беспокоит Something(). Это вызов функции или конструктор класса?

vallentin 26.01.2016 02:06

Для свойств следует использовать регистр Паскаля. Что касается разнообразных имен, некоторые люди используют _, а некоторые - m_, а некоторые просто используют старую оболочку верблюда. Я думаю, что пока ты здесь постоянный, это не имеет значения.

Тот пример .NET, который вы опубликовали, был функцией. Принятый «стандарт» для методов / функций - это верблюжий регистр с заглушкой (или Паскаль, если вы хотите его так назвать).

Я придерживаюсь верблюжьего футляра, где могу. Это позволяет легко узнать разницу между переменной и методом.

Кроме того, я люблю вставлять подчеркивание перед локальными переменными класса. Например: _localVar.

Ответ принят как подходящий

Я использую то, что использует Framework, поскольку это де-факто лучшая практика. Однако до тех пор, пока код в вашей компании является последовательно с использованием их стиля, вам гораздо лучше привыкнуть к нему. Если у каждого разработчика есть свой стандарт, значит, стандарта нет вообще.

Я здесь не согласен. Я бы попытался приучить бывших Java-разработчиков к стандартам .NET для согласованности с Framework.

Joe 29.09.2008 22:04

В зависимости от среды изменение стандарта, чтобы он соответствовал новому типу, часто является CLM.

Greg Hurlman 01.10.2008 22:47

Пожалуйста, дайте ссылку на CLM, на который вы ссылались.

Jessy 17.09.2013 20:27

@Jessy - CLM: маневр, ограничивающий карьеру. У них нет URL-адресов.

Greg Hurlman 16.10.2013 20:28

Я проголосовал против, извините. Я думаю, что более важно, чтобы программисты языка были последовательны во всей отрасли, и я думаю, что это должно быть целью и посланием.

Luke Puplett 08.11.2013 18:13

Для общедоступных интерфейсов вы должны придерживаться дизайна фреймворка MS .NET. рекомендации: «Условные обозначения заглавных букв».

Для участников, не подвергшихся воздействию, то все, о чем вы и ваши коллеги можете договориться.

Думаю, вам придется смириться с тем, что стандарт кодирования говорит о вашем месте работы, как бы вам лично это не нравилось. Возможно, однажды в будущем вы сможете диктовать свои собственные стандарты кодирования.

Лично мне нравится, когда базы данных используют имена в форме «fish_name», «tank_id» и т. д. Для таблиц и полей, тогда как кодовый эквивалент модели базы данных будет «fishName» и «tankID». Мне также не нравится именование "_fooname", когда доступно "fooName". Но я должен повторить, что это субъективно, и разные люди будут иметь разные представления о том, что хорошо, а что плохо из-за их предыдущего опыта и образования.

Ссылка на официальный рекомендации по дизайну может помочь. В частности, прочтите раздел о Стили заглавных букв.

По большому счету, Pascal vs Camel не имеет большого значения, и вы вряд ли сможете убедить кого-либо вернуться к существующей кодовой базе только для того, чтобы изменить регистр имен. Что действительно важно, так это то, что вы хотите быть последовательными в рамках данной базы кода.

Я просто счастлив, если вы не используете венгерский.

Я просто хотел бы, чтобы у нас была версия руководства по дизайну в формате PDF / Word, я бы распечатал ее и назвал бы стандартом магазина!

Walden Leverich 30.09.2008 00:08

Это большой документ, но не большой который, и Word довольно хорошо обрабатывает копирование / вставку из HTML. Действуй.

Joel Coehoorn 24.11.2008 20:48

На самом деле, здесь нет «стандартной» договоренности. Где-то есть отредактированное Microsoft руководство, и, как и в случае с любым другим правилом соглашения об именах, наверняка есть еще одно, опровергающее его, но вот то, что я понял как «стандартное соглашение C# о регистрах».

  1. PerWordCaps в именах типов (классы, перечисления), константах и ​​свойствах.
  2. camelCase для действительно длинных локальных переменных и защищенных / частных переменных
  3. Нет ALL_CAPS Когда-либо (ну, только в определениях компилятора, но не в вашем коде)
  4. Кажется, что некоторые системные классы используют подчеркнутые имена (_name) для частных переменных, но я предполагаю, что это исходит из предыстории исходного автора, поскольку большинство из них пришло прямо из C++. Также обратите внимание, что VB.NET не чувствителен к регистру, поэтому вы не сможете получить доступ к защищенным переменным, если расширите класс.

Фактически, FxCop будет применять некоторые из этих правил, но (AFAIK) он игнорирует любое написание, которое вы используете для локальных переменных.

Для этого существует стандартное соглашение, и StyleCop обеспечивает его соблюдение.

Anthony 29.09.2008 20:55

Мне нравятся соглашения о кодировании, изложенные в спецификации проекта Муравьед

Вам следует взглянуть на новый инструмент Microsoft StyleCop для проверки исходного кода C#. Также следите за FxCop для проверки скомпилированных сборок .Net. FxCop больше фокусируется на деталях того, что делает код, а не на макете, но у него есть некоторые правила именования, связанные с общедоступными именами.

StyleCop определяет стандарт кодирования, который сейчас продвигается Microsoft как отраслевой стандарт. Он проверяет исходный код C# на соответствие стандарту. StyleCop придерживается вашего стиля PascalCase.

Заставить людей использовать StyleCop (или любой другой стандарт в этом отношении) может быть сложно, это довольно сложно, а StyleCop довольно исчерпывающий. Но код должен соответствовать единому стандарту - и личный стандарт лучше, чем ничего, стандарт компании лучше личного, а отраслевой стандарт лучше всего.

Намного легче убедить людей, когда проект начинается - команда формируется, а существующего кода для преобразования нет. И вы можете использовать инструменты (FxCop, StyleCop), чтобы сломать сборку, если код не соответствует стандартам.

Вы должны использовать стандарт языка и инфраструктуры - код SQL должен использовать стандарты SQL, а код C# должен использовать стандарты C#.

Ух ты! Аккуратно, не знал этого.

dguaraglia 29.09.2008 21:14

FxCop также отлично подходит для работы с уже скомпилированными сборками. Я научился делать корпус Pascal и Camel, используя как StyleCop, так и FxCop.

BinaryMisfit 30.09.2008 01:59

Из Руководство разработчика .NET Framework Условные обозначения заглавных букв, чувствительность к регистру:

The capitalization guidelines exist solely to make identifiers easier to read and recognize. Casing cannot be used as a means of avoiding name collisions between library elements.

Do not assume that all programming languages are case-sensitive. They are not. Names cannot differ by case alone.

Я только что нашел Стандарты кодирования для .Net.

Пожалуйста, не используйте сокращатели URL. Сравните вашу версию и мою редакцию, чтобы увидеть, как правильно включать ссылки в свой ответ.

meagar 27.07.2011 21:39

Спасибо, Мигар. Конечно, сделаю это в следующий раз

Naveen Vijay 28.07.2011 10:40

Какова квалификация Лэнса Ханта для написания стандартов кодирования для .Net?

Eric 31.08.2016 19:16

День, когда я уйду из программирования - это когда Microsoft сделает CamelCase на C# стандартным. Потому что моя выросшая логика имеет много причин для использования PascalCase, в отличие от детской логики, которой важны только более короткие имена или более легкое написание.

И, кстати, CamelCasing происходит в основном из стиля библиотеки C++ STD, родного старого языка, унаследованного от C. Итак, Java унаследована от C++. Но C# - это совершенно новый язык - чистый и красивый, с новыми правилами. Oldfags должны программировать на Java или C++, люди нового поколения должны программировать на C# - и они никогда не должны взаимодействовать друг с другом.

Рассмотрим этот пример: 1) PascalCase: list.Capacity.ToString (); 2) CamelCase: list.capacity.toString ();

В (1) у нас есть CAMEL CASE в долгосрочной перспективе !!! означает listCapacityToString. В (2) у нас есть фигня: listcapacitytoString.

Вот как я читаю. И почему CamelCase для себя нелогичен. Я мог убить за PascalCase, никогда не трогать его, детей любого возраста.

Microsoft - навсегда или до тех пор, пока они не начнут использовать PascalCase.

Важно то, что вы предпочитаете, в первую очередь, очевидно, что вы придерживаетесь стандартов команды. В частном порядке вы кодируете, как хотите, это не влияет на готовый продукт, независимо от того, назвали ли вы свою переменную someVariable или SomeVariable.

Конечно, всегда найдутся кодовые снобы, которые проголосуют против и не согласны с чем-то совершенно разумным:

Daniel 16.05.2017 12:39

Другие вопросы по теме