6

Когда Resharper спорит с самим собой, как узнать, какой человек больше доверять?Должны ли эти аргументы быть добавлены или удалены?

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

С помощью этой строки кода:

ICryptoTransform Encryptor = RijndaelCipher.CreateEncryptor(SecretKey.GetBytes(32), SecretKey.GetBytes(16)); 

Resharper говорит мне "добавить имя аргумента" rgbkey" и затем "добавить имя аргумента "rgbIV"

Так что линия затем:

ICryptoTransform Encryptor = RijndaelCipher.CreateEncryptor(rgbKey: SecretKey.GetBytes(32), rgbIV: SecretKey.GetBytes(16)); 

Когда я снова запустить Resharper, хотя, говорит,

«Спецификация имени избыточного аргумента» - «Удалить спецификацию имени аргумента» (rgbkey) (а затем rgbIV).

Это кажется или работает нормально, хотя ...

+2

Resharper действительно не говорит вам, что в любом случае лучше, чем в другом, это просто дает вам «Bulb Action», чтобы помочь вам с чем-то, если вам это нужно. – vcsjones

ответ

6

Явное именование параметр является необязательным по обязательным параметрам, так что обе формы являются «правильными» вопрос, который вам больше нравится? Как сказал vcsjones, Resharper просто дает вам некоторые варианты рефакторинга, соответствующие вашим предпочтениям.

+1

В таком случае я бы подумал, что они просто останутся достаточно в одиночестве. Если на развилке на дороге путешественник забирает одного, но почти одинаково путешествующего, другой говорит ему: «Эй, ты не знаешь, что это путь к Тимбукту?» (приносят извинения Роберту Фросту и Йоги «Если вы придете к развилке на дороге, возьмите это« Берра ». –

6

Resharper говорит мне

На самом деле, это не так. Есть (в общем) две категории вещей, которые R # общается с пользователем: вещи, которые он думает, что пользователь должен делать, и вещи, которые пользователь мог бы хотеть делать, чтобы он мог облегчить выполнение быстрее.

Пример первый:

var i = 4; 
i = 5; 
DoSomething(i); 

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

Примером второго:

if ((new Random()).Next() > 5) 
{ 
    DoSomething(); 
} 
else 
{ 
    DoSomethingElse(); 
} 

позиционирование курсора на if будет производить значок карандаша в левом поле, предлагая контекст действия инвертировать if. Это не говорит вам, что должен - он говорит: «эй, если вы хотите это сделать, просто выберите этот пункт меню, и я сделаю это для вас».

Добавление имени аргумента во второй категории - действие контекста. Если вы не хотите, чтобы вас предлагали, вы можете отключить его в ReSharper | Options | Code Editing | C# | Context Actions.Для проверки кода всплывающее меню само по себе дает возможность изменить серьезность проверки; или вы можете посмотреть на все их в ReSharper | Options | Code Isnpection | Inspection Severity.

Лично некоторые действия контекста я не думаю, что я когда-либо использовал (например, «конвертировать в шестнадцатеричный»), но есть и другие, которые я считаю неоценимыми для быстрого кодирования (различные комбинации переключения между ?: и if и инвертирование, например)

Смежные вопросы