Каковы соглашения об именах в С#?
Есть несколько вопросов по этому вопросу, но все они, похоже, нацеливались на определенную часть языка;
Я только начинаю с С# с другом, создающим игры для XBOX Live Arcade. Я разработал ряд игр с использованием ActionScript 2 и 3, но хочу начать изучение более мощных языков и устройств.
Я хочу убедиться, что я не задумываюсь о том, с кем я начинаю работать (если я доберусь до этого), или даже просто с людьми, когда я сталкиваюсь с проблемами и задаю вопрос с серьезным нарушением/ "неправильным" наименованием методы и т.д.
Я нашел это запутанным в примере кода, который я видел, потому что, похоже, с моей нынешней точки зрения некоторые недостатки. Я сомневаюсь, что будет использовано ошибочное соглашение об именах, поэтому я понимаю, что у меня просто проблемы с пониманием.
Насколько я могу судить до сих пор, существуют следующие соглашения:
-
public Type SomeMethod()
-
private Type SomeMethod()
- нет подчеркивания или чего-то еще?
-
public static Type SomeMethod()
-
private static Type _SomeMethod()
- этот просто кажется странным..
-
public Type someProperty
- переключить его на корпус верблюда для свойств?
-
public static Type SomeProperty
- а затем вернемся к корпусу паскаля для статического режима.
В ActionScript 3 я разработал и строго придерживаюсь этих соглашений:
-
private var _someVar
-
public var someVar
-
private function _someMethod()
-
public function someMethod()
-
public static var SomeStaticVar
-
public static function SomeStaticMethod()
-
public const SOME_CONSTANT
Есть ли полный список соглашений об именах с аргументацией позади каждого, чтобы я мог окунуться в них? Отмена синтаксиса (т.е. public Type method()
вместо AS3 public function method():Type
) бросает меня достаточно в тот момент, когда я знаю, что мне нужно следить за тем, как я называю вещи, иначе я забуду и буду развивать вредные привычки, который я предпочел бы гвоздь и избегать сейчас.
Ответы
Ответ 1
От Microsoft существует Стандарты кодирования кодовых комбинаций "все-в-одном" , который содержит полный набор правил и рекомендаций. (также доступен здесь)
В этом документе описывается руководство по стилю кодирования для собственных программ С++ и .NET(С# и VB.NET), которые используются командой проекта Microsoft All-In-One Code Framework.
Ответ 2
Две основные капитализации называются camelCase и PascalCase.
Основные правила (с большим количеством вариаций)
- Типы используют PascalCase
- свойства и методы всегда используют PascalCase
- публичные члены (поля, константы) используют PascalCase
- локальные переменные используют camelCase
- параметры используют camelCase
И хотя в документации говорится, что "Внутренние и частные поля не охватываются руководящими принципами", существуют четкие соглашения:
- частные поля используют camelCase
- частные поля, которые возвращают префикс свойства a
_
Ответ 3
Существует множество соглашений об именах, рекомендованных Microsoft для программирования .Net. Вы можете прочитать об этих здесь.
Как правило, используйте PascalCase для общедоступного свойства, имени метода и типа.
Для параметров и локальных переменных используйте camelCase.
Для частных полей выберите один: некоторые используют camelCase, другой префикс _camelCase с _.
Общепринятое соглашение также означает имена констант с ALLCAPS.
Ответ 4
С# предпочитает PascalCasing для классов, свойств и методов.
Насколько я могу судить до сих пор, существуют следующие соглашения:
-
public Type SomeMethod()
< - yes
-
private Type SomeMethod()
< - correct, no undscore
-
public static Type SomeMethod()
< - correct
-
private static Type _SomeMethod()
< - мне это тоже кажется странным. подчеркивание не должно быть там
-
public Type someProperty
< - no, публичное свойство должно быть PascalCased (SomeProperty)
-
public static Type SomeProperty
- а затем вернемся к корпусу паскаля для статического режима.
Если вы используете Visual Studio или XNA Game Studio (я думаю, это вилка Visual Studio), я настоятельно рекомендую использовать лицензию ReSharper (от программного обеспечения jetbrains). Они расскажут вам в редакторе кода, как соответствовать общим соглашениям С#.
Дополнение:
Вы должны использовать camelCasing для частных полей и аргументов метода. Для частных полей я обычно добавляю их _WithAnUnderscore.