Почему C # использует другое соглашение об именовании?[закрыто]
-
03-07-2019 - |
Вопрос
Недавно я начал работать с C # и заметил, что соглашение, похоже, заключается в том, что переменные начинаются с заглавной буквы вместе с методами.
Является ли это единственным языком, который это делает, и почему?Например:
Page Page = new Page();
Page.Action();
На других языках вы бы увидели вместо этого:
Page page = new Page();
page.action();
Есть и другие примеры этого, которые сбивают с толку, поскольку я много работал с UML, Ruby, C ++ и Java.
Мой вопрос в том, почему C # делает это таким образом, когда другие языки этого не делают?
Редактировать
Другие пользователи Stack Overflow отмечают, что C # не следует этому соглашению, это была просто ошибка с моей стороны.
Решение
Ну, на самом деле, нет:соглашение в C # предназначено для имен переменных (и полей) в формате camelCased и методов PascalCase:
Page page = new Page();
page.Action();
Другие советы
Нет, это довольно нестандартный код на C #.В руководстве по проектированию .Net Framework, приведенном в разделе 2.6, рекомендуется использовать оболочку camel для имен локальных переменных.
Публичные пользователи используют PascalCase
, частные пользователи используют camelCase
.
Я думаю, что это проясняет, какие методы поддерживают класс, а какие методы определяют класс.
public class Foo
{
private Bar bar;
public Bar Bar { get; set; }
public void DoFoo()
{
makeFoo();
}
private void makeFoo()
{
}
}
Каждый набор соглашений C #, которые я написал или использовал, указывал бы camel case для переменных, так что:
Page page = new Page();
MyClass myClass = new MyClass();
Не уверен, где вы видели, чтобы использовался регистр Pascal, но это определенно не что-то присущее или стандартное для C #.
Переменные в C # обычно не начинаются с заглавной буквы (хотя это, очевидно, зависит от собственной реализации разработчика).Что вас, вероятно, смущает, так это концепция Собственность.Свойства в C # используются синтаксически как переменные (в том смысле, что их можно извлекать или назначать, а не просто выполнять как функцию), но могут инкапсулировать бизнес-логику в обеих операциях.
Однако, чтобы ответить на более широкую часть вашего вопроса, и свойства, и методы / функции обычно начинаются с заглавной буквы в соответствии с Рекомендации Корпорации Майкрософт.
PascalCase был стандартом в Microsoft задолго до .NET.(В Win32 API и т.д.)
Соглашение также имеет смысл использовать в рамках единой среды..NET сама по себе является всеобъемлющей средой, а Microsoft - другой компанией, поэтому на самом деле нет смысла перенимать чью-то еще.
Кроме того, я сильно сомневаюсь, что в UML есть соглашение об именовании или что даже идея о том, что UML имеет соглашение об именовании, имеет смысл.UML моделирует ваше программное обеспечение и должен соответствовать правилам этого программного обеспечения.
Вы можете многое узнать о том, какие соглашения следует принять, используя два следующих инструмента.
FxCop: http://msdn.microsoft.com/en-us/library/bb429476 (ПРОТИВ 80).aspx
Public = PascalCase, я обычно использую camelCase только для закрытых полей и аргументов параметров.
Читать это однако кодирование стандартное удобный поиск в Google - неплохое место для начала.