C sharp очистка кода: resharper

я просто использовать Resharper и это заставило меня почувствовать, что я вообще не знаю, как кодировать на C#; это дало мне много предложений; немногие из них:

1) SomeObject o = new SomeObject();

Resharper преобразует в:

var o = new SomeObject()

2) this.Loaded += new RoutedEventHandler(MainPage_Loaded);

to

this.Loaded += MainPage_Loaded;

3) преобразуйте мои переменные и поместите _ перед всеми переменными экземпляра.

4) Удаление имени родительского класса. Я проверил это на технология Silverlight.

public partial class MainPage : UserControl

to

public partial class MainPage

5) Замените переменную

 this.variable = somevalue

to

 variable = somevalue

все это действительно необходимо? Это действительно повлияет на эффективность моей программы? Я имею в виду, что хорошего это сделает, заменив мои имена классов на var ключевое слово. Ведь var также заменяется именем класса во время компиляции. Это происходит потому, что это и запрограммировали, или же эти вещи действительно влияют так или иначе?

4 ответов


Это поведение настраивается в настройках ReSharper. Существует сочетание правил очистки кода (например, следует ли заменять обычаи на var - я этого не делаю!), правила стиля кода (например, именование переменных) и правила форматирования (например, как разместить фигурные скобки).

Я написал статью, которая дает обзор эти параметры и как они могут быть использованы для формирования стандартов кодирования, а затем автоматически через код очистка:

http://gojisoft.com/blog/2010/05/10/coding-standards-using-resharper/

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


все это действительно необходимо?

никто не нужен.

это действительно повлияет на эффективность моей программы?

это не повлияет на скомпилированный код таким образом, чтобы изменить производительность или семантику вообще.

я имею в виду, что хорошего это сделает, заменив мои имена классов на var ключевое слово. Ведь var также заменяется именем класса при компиляции время.

более читабельный код.

он делает, потому что он был запрограммирован делать или делать эти вещи действительно влияют тем или иным образом?

да. Они настраиваются, если они вам не нравятся.

1) это нормально.

SomeObject o = new SomeObject();

первый SomeObject является избыточным и бесполезным и с var это не менее читабельно и, возможно, более читабельно. Кроме того, для сложных определений как

var dictionary = new Dictionary<string, Dictionary<string, List<string>>();

это более читабельно, чем альтернатива. Однако это можно переусердствовать. Например

string s = "s";

предпочтительнее

var s = "s";

как

var i = 5;

над

int i = 5;

отметим, что

var i = 2147483648;

действительно плохо, потому что не сразу понятно, какой тип i есть. Для несложных определений я предпочитаю использовать явную типизацию над неявной типизацией. Кроме того, иногда вы хочу сказать

IFoo foo = new Foo();

для явного типа foo an IFoo, тогда как var напечатал бы его как Foo.

2) меньше кода вообще лучший код.

3) я ненавижу это предложение. Я ненавижу ведущую роль. Я использую обычное соглашение об именах для переменных-членов, и я предваряю их this для ясности. Я бы выключил это.

public SomeObject(string name) {
    this.name = name;
}

более читаем, чем

public SomeObject(string name) {
    _name = name;
}

в моем мнение.

4) Подождите, почему он это делает? Меня это немного смущает. Потому что это частичное, а другая часть определения класса имеет наследование? Я не могу представить, что он делает это в случае, когда он меняет семантику. Я бы выключил это.

5) мне это не нравится (см. 3.)


Они не нужны.

Они следуют стандарту кодирования, установленному resharper. Хорошо, что вы можете настроить стандарт кодирования по - своему.

красивая вещь о resharper, хотя, что вы в конечном итоге узнать различные способы делать то, что вы всегда делали определенным образом.


все эти изменения не должны иметь никакого влияния на скомпилированный код CIL - это просто мнение ReSharper о читаемости самого кода C#.

вы можете настроить все эти параметры в соответствии с потребностями вашего или вашего отдела. По большей части, это вопрос личных предпочтений.