2012-06-22 2 views
3

Я знаю, что это может быть глупый вопрос, но здесь он идет. Я всегда писал своих частных членов, таких как privateMember, и я много читал о соглашениях об именах на C#, потому что заметил, что многие автоматические сгенерированные коды в visual studio используют _variableName для частных пользователей. Везде, где я читал, даже в документах Microsoft, вы должны использовать privateMember. Итак, мой вопрос в том, что, если хорошие практики говорят, что я должен написать privateMember, как и сейчас, почему heck Visual Studio генерирует классы с частными членами с использованием подчеркивания (_privateMember)?Почему сгенерированный код в C# использует символ подчеркивания?

+0

Как в стороне, одной из причин префикса переменных-членов с подчеркиванием является то, что они отображаются в верхней части списка intellisense. Я лично ненавижу это, поскольку клавиатура растягивается, чтобы получить символ подчеркивания, действительно неудобно. – dash

ответ

5

Не так давно, когда C# поднимался на рынок, существовала концепция, согласно которой локальные переменные должны иметь префикс _. Эта концепция не была принята сообществом, так как в чистом C _ выводит системные переменные/функции, а метаданные приводятся по __. Поэтому через несколько лет они теперь не хотят использовать это. Но все же вы найдете верующего, который использует это обозначение не потому, что он фанатик, но многие старые приложения C# содержат это соглашение.

Почему это в VisualStudio?

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

0

Это просто соглашение на языке C#, так что в конструкторе вы можете использовать _varable вместо this.variable, когда конструктор и имя поля одинаковы.

есть все C# именовании конвенций в http://msdn.microsoft.com/en-us/library/ms229002.aspx

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

+4

Пожалуйста, прочитайте весь вопрос не только по теме. –

+0

Я сделал, я только что закончил lil больше моего ответа, затем – brunoss

+0

Итак, вы этого не поняли. В вашем ответе нет ничего о Visial Studio и сгенерированном коде, о котором идет речь. –

1

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

+1

Пожалуйста, прочитайте весь вопрос не только по теме. –

+0

@Vash, это довольно большое предположение, я прочитал вопрос. Я просто понял, почему ** означает нечто иное, чем вы. У вас есть принятый ответ, вы побеждаете. – Nathan

5

Соглашения об именах не согласованы на 100%. Это один из тех, кому нравятся некоторые люди, некоторым людям безразлично, а некоторые ненавидят. Некоторые люди считают это лучше, например, переменные выделяются через свое имя, и это один из способов сделать это. Другие люди используют this.instanceVariable, а не instanceVariable все время, так что переменные экземпляра выделяются, другие люди добавляют что-то, отличное от символа '_', и некоторые люди просто не делают этого, чтобы использовать какое-либо особое различие.

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

Следует также отметить, что фрагменты кода, сгенерированные Visual Studio, в большинстве случаев могут быть настроены так, чтобы соответствовать правилам кодирования вашей команды.

0

В качестве условного обозначения частные поля были/используются как с подчеркиванием, например. string _name;

Ссылка даст вам больше информации о руководящих принципах для именования coventions РС http://msdn.microsoft.com/en-us/library/ms229045.aspx

+3

Как это ни парадоксально, эта ссылка на самом деле рекомендует * против * его. –

+0

Правильно он рекомендует против этого, поэтому я сказал, что частные поля были/используются с подчеркиванием и скопировали ссылку для вас – HatSoft

+0

А? Logic fail – Heliac

6

Microsoft Code Conventions actually recommend against using underscores altogether. Это личное предпочтение. Я бы не использовал сгенерированный код в качестве вдохновения для моего стандарта конвенции кодирования.

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

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

+4

Приятно найти эту ссылку. Я согласен со всем, кроме подчеркивания, для меня легче сканировать класс, если все частные поля имеют префикс с подчеркиванием. – Nathan

+0

Вышеупомянутая ссылка относится к публично открытым API (см. Https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/naming-guidelines) - ** не ** 'private'. – mjwills

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^