Во-первых, я знаю, что этот вопрос задавался несколько раз до этого, и в конце концов, это в основном вопрос личных предпочтений, но, читая все темы о предмете, некоторые вещи мне не понятны.
В принципе, то, что большинство людей соглашается, по крайней мере, состоит в том, что публичный член должен быть PascalCased, в то время как частные члены должны быть lowerCamelCased.
Вопрос, который обычно вызывает дискуссию, заключается в том, следует ли префикс частных членов подчеркивать или что-то еще. Префикс нарушает несколько правил StyleCop (которые, очевидно, могут быть отключены)
Обоснование не префикса состоит в том, что вы должны использовать это. вместо префикса.
Проблема заключается в том, что я не понимаю, как это имеет значение? Я имею в виду, это не так, как вы не можете использовать это в публичном элементе в любом классе внутри класса.
Представьте себе класс Customer, выглядящий следующим образом:
class Customer
{
private int age;
public int Age
{
get { return this.age; }
set { this.age = value; }
}
}
(Очевидно, что в таком простом случае я мог бы использовать autoproperty, но это только пример).
Если бы я добавил второе свойство внутри этого класса, ничто не помешало бы мне ссылаться на него, используя this.Age(публичное свойство), а не this.age(частное поле). Иногда это может быть даже желательным, если на уровне получателя была применена какая-либо проверка или форматирование.
Кроме того, если некоторым другим свойствам моего класса необходимо было изменить возраст клиента, было бы целесообразно использовать свойство, а не поле поддержки непосредственно, так как сеттер мог также реализовать некоторые проверки бизнес-правил, правильно?
Другими словами, я действительно не вижу, как это ключевое слово позволяет избежать путаницы между частными элементами поддержки и общедоступными свойствами, поскольку это можно использовать для обоих, а IntelliSense показывает как?
Спасибо.