Соглашение о капитализации для полей, защищенных C #

17

Каковы соглашения об использовании заглавных букв для имен защищенных полей в C #?

Это _myVar (как личное поле) или MyVar (как свойства)?

Луис Рис
источник
3
Вы уверены, что хотите иметь защищенные поля вообще? Большинство причин отсутствия открытых полей применимы и к защищенным, поэтому я думаю, что лучше использовать защищенные свойства.
svick
в тестовых случаях, как правило, удобно иметь защищенные поля ... но, возможно, вы правы, его можно изменить на свойства. Но если я хочу защищенное поле, каково соглашение об именах?
Луис Рис
2
Вы уверены, что _myVar является подходящим соглашением для частных полей? (вы делаете предположение, что это так). Не пытаясь начать религиозную войну здесь, просто пытаясь сказать, что если вы выбрали какое-то произвольное правило для частных полей, вы можете выбрать другое правило для своих защищенных полей. Единственный совет - быть последовательным.
Марек

Ответы:

13

Существует что-то, что называется « Руководство по разработке библиотек классов» , написанное Microsoft.

Это говорит следующее:

Не предоставляйте экземпляры полей, которые являются открытыми или защищенными.

Открытые и защищенные поля не работают должным образом и не защищены требованиями безопасности доступа к коду. Вместо использования общедоступных полей используйте закрытые поля и открывайте их через свойства.

Также как и:

  • Использовать регистр Pascal в именах полей

  • Не используйте префикс для имен полей. Например, не используйте g_ или s_ для различения статических и нестатических полей.

Что касается _префикса, он используется так же часто, какthis. соглашение (насколько я видел просмотр исходного кода в CodePlex / GitHub). ReSharper, например, продвигает _в своих проверках имен.

jgauffin
источник
Вы были немного избирательны в том, чтобы не включать «Не используйте префикс для имен полей». из MSDN вместе с правилом обсерватории Pascal :) Хотя resharper по умолчанию поддерживает префикс _, если вы цитируете соглашения MSDN IMHO, вам не следует смешивать их с собственными впечатлениями.
Марек
2
что значит "не версия хорошо"? Вы говорите, что поскольку защищенное поле не рекомендуется, нет никаких указаний относительно его названия? Во всяком случае, Решарпер, кажется, рекомендуетMyVar
Луис Рис
2
@Marek: я включил свои собственные предпочтения. Я просто заявил, что предпочитают Решарпер. И я не собирался быть избирательным. Ответ обновлен
jgauffin
1
@jgauffin Помимо того, что потребители используют рефлексию против вашего кода, разве поле не меняется на свойство, прозрачное для вызывающих? Как изменение защищенного поля на защищенное свойство с тем же именем нарушает совместимость?
Quantic
1
это нарушает двоичную совместимость: msdn.microsoft.com/en-us/library/ta31s3bc(v=vs.71).aspx
jgauffin