2012-05-24 2 views
3

Я использовал «это». префикс в течение примерно двух лет (правило StyleCop SA1102). Но теперь я передумал и использовал префикс «подчеркивания» для статических и частных частных полей и удалил «это». префикс.C# Code Style: переход от "this." prefix to "underscore"

Здесь мои причины перейти от «этого». на «подчеркивание»:

  1. Хрупкие: Никто в вашей команде всегда будет использовать «это.» префикс, поэтому, когда вы видите проект, который следует этому стилю, вы не увидите «это». префикс для всех членов экземпляра.
  2. Useless Distinguish: В чем разница между экземпляром и статическими полями? Вы когда-нибудь выигрываете?
  3. Шум: Если вы позаботитесь об использовании этого «. префикс, вы увидите «это» где угодно. Например, у нас было 77 раз «этого» ключевого слова в классе, но после изменения нашего стиля у нас есть только 9 подчеркиваний, и я думаю, что код более читабельный (вы можете легко следовать логике кода).
  4. Razor: Кажется уродливым использовать «это». префикс в кодах Razor C#. Например, у вас будет «@ this.Html.Something» вместо «@ Html.Something». И нам нравится общее правило применять ко всем нашим C# -кодам везде.

Что вы думаете об этом?

Можно ли игнорировать правило StyleCop SA1102 (префикс «this.») И использовать префикс «подчеркивания», чтобы отличать поля класса?

+1

Я известные разработчики, которые написали "это." просто потому, что точка воспитывала бы intellisense. После того, как они сообщили, что Ctrl + Space тоже поднимает его, они сразу же перестали использовать ключевое слово. –

+1

Конечно, он отличается. "это." приводит только членов экземпляра, в то время как CTRL + SPACE приносит все. Хотя это не является хорошей причиной для использования этого." –

+0

Похоже, что CTRL + ALT + SPACE только вызывает экземпляры экземпляров - но это может быть просто Resharper. –

ответ

5

Все ваши баллы будут применены и к подчеркиванию (это необходимо выполнить, но не так полезно и т. Д.), И если вы изменили 77 'этот' на 9 _, вы могли бы пойти с 9 ', это «Я уверен.

Зная, является ли это экземпляром или статическим полем/свойством, очень полезно, imo, esp. в многопоточной среде.

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

Лично я часто (не всегда) использую «это», чтобы отличать локальные переменные от свойств класса, особенно. если метод длинный.

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

1

Я бы не сказал, что различение статических элементов и экземпляров бесполезно. Это зависит от того, какой код вы используете большую часть времени (многопоточность или просто код, не связанный с потоками). "Эта." дает непосредственную семантику об используемом члене, тот факт, что вы лично не нуждаетесь в этом, здесь не имеет решающего значения. Крупные корпоративные приложения, разрабатываемые несколькими командами, чрезвычайно выигрывают от простых улучшений чтения, таких как «это».

A few more details