Конвенція про капіталізацію захищених полів C #


17

Які умовні позначення великої літери для захищених імен полів у C #?

Це _myVar (як приватне поле) чи MyVar (як властивості)?


3
Ви впевнені, що взагалі хочете мати захищені поля? Більшість причин відсутності загальнодоступних полів стосуються і захищених, тому я думаю, що краще замість цього використовувати захищені властивості.
svick

у тестових випадках, як правило, зручно мати захищені поля .. але, можливо, ви праві, це може бути змінено на властивості. Але якщо я хочу захищене поле, що таке конвенція про іменування?
Луї Ріс

2
Ви впевнені, що _myVar - це правильна умова для приватних полів? (ви створюєте передумови, що це так) Не намагаючись розпочати тут релігійну війну, просто намагаєтесь сказати, що якщо ви вибрали якесь свавільне правило для приватних полів, ви можете вибрати інше правило для своїх захищених полів. Єдина порада - бути послідовним.
Марек

Відповіді:


13

Існує щось, що називається Настановами щодо розробки бібліотек класів, які написано Microsoft.

У ньому сказано наступне:

Не надайте поля примірників, які є загальнодоступними або захищеними.

Загальнодоступні та захищені поля не мають версії та не захищені вимогами безпеки доступу до коду. Замість використання загальнодоступних полів використовуйте приватні поля та виставляйте їх через властивості.

Так само, як:

  • Використовуйте корпус Паскаля в назвах полів

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

Щодо _префікса, він використовується так само часто, як і this.конвенція (наскільки я бачив перегляд вихідного коду в CodePlex / GitHub). Наприклад, ReSharper просуває _у своїх чеках іменування.


ви були трохи вибіркові, не включаючи в себе "Не використовувати префікс для імен полів". від MSDN поряд із правилом корпусу Pascal :) Хоча це правда, що resharper за замовчуванням рекламує префікс _, якщо ви цитуєте MSDN-конвенції IMHO, ви не повинні змішувати їх із власними враженнями.
Марек

2
що означає "не версії добре"? Ви хочете сказати, що оскільки захищене поле не рекомендується, не існує настанови щодо його назви? У всякому разі, схоже, Решарпер рекомендуєMyVar
Луї Ріс

2
@Marek: Я включив власні переваги. Я просто заявив, що віддають перевагу Решарпер. І не був моїм наміром бути вибірковим. Відповідь оновлено
jgauffin

1
@jgauffin Окрім споживачів, які використовують відображення проти вашого коду, чи не змінюється поле на властивість, прозору для абонентів? Як зміна захищеного поля на однойменну захищену властивість порушує сумісність?
Квантовий

1
він порушує бінарну сумісність: msdn.microsoft.com/en-us/library/ta31s3bc(v=vs.71).aspx
jgauffin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.