Ответ 1
Одна из важных вещей, которую следует помнить, заключается в том, что this
удаляется компилятором, и поэтому это просто вопрос "что вам нравится и кто с вами делится кодом?". Это повлияет на производительность, а не на whit.
Возможный дубликат:
Когда вы используете ключевое слово "this" ?
Я только что начал использовать Resharper для анализа моего кода, и есть много вещей, которые он предложил, и я очень доволен его выходом, поскольку он также учит меня нескольким лучшим методам для выполнения вещей.
Очевидно, что его предложения могут быть проигнорированы, и один из них я просто хотел бы получить некоторые отзывы от сообщества!
Я всегда предпочитал использовать квалификатор 'this' для свойств, принадлежащих текущему классу (например, this.Name). Никакой реальной причины - я просто, похоже, принял это много лет назад.
Resharper предполагает, что это избыточно и, возможно, я должен удалить его.
Как вы думаете?
Одна из важных вещей, которую следует помнить, заключается в том, что this
удаляется компилятором, и поэтому это просто вопрос "что вам нравится и кто с вами делится кодом?". Это повлияет на производительность, а не на whit.
Предпочтительно, я использую this
только для предотвращения неоднозначности между (возможно) свойством и параметром функции
public class thing
{
private string name;
public thing(string name)
{
this.name = name; // will set private string name to param string name
}
}
Если вы уже работаете с определенным классом, помнить об этом не сложно, и мне не нужно напоминать о том факте, что я обращаюсь к локальной переменной каждый раз, когда обращаюсь к одному.
Так что я думаю, что ReSharper в этом прав.
Я нахожу его избыточным, особенно с четко определенным стандартом кодирования:
Name // Property
_name // Member field
name // local variable
Используя this.<whatever>
, похоже, больше работает.
Я лично считаю, что хорошая практика использования ключевого слова this
, потому что он четко отмечает, что proredty/method/etc принадлежит экземпляру объекта или нет. Это особенно полезно, когда частные члены называются так, что локальные переменные неотличимы от частных членов:
/// some pretty long method
/// ...
frameCount += 1; // is it private memeber or some local defined above?
Излишне говорить, что, вероятно, лучше не использовать его вообще, чем использовать непоследовательно.
Однако я нахожу, что постоянное использование this
делает код "шумным" с this
непонятным distractor. ИМО лучше использовать специальное _
префиксное имя для частных членов:
/// some pretty long method
/// ...
_frameCount += 1; // it clearly private memeber!
он также намного быстрее печатает.
Одно из преимуществ использования этого. является intellisense. Он сужает список вещей, которые вы могли бы выбрать быстрее.
Это технически избыточно, но StyleCop (если вы придирчивы и используете полный набор стандартов кодирования Microsoft) говорит, что вы должны его использовать.
Я делаю, многие люди этого не делают, поэтому я предполагаю, что это зависит от личных предпочтений или стандарта кодирования у вашего работодателя.
В этом случае это предпочтение - так что вы предпочитаете его использовать, скажите resharper, и он перестанет жаловаться.