Resharper корректен?

Другие методы скопируют простой текст в буфер обмена. Для копирования HTML (т.е., можно вставить результаты в редактора WSIWYG), можно сделать следующее в IE ТОЛЬКО . Это, существенно отличается от других методов, поскольку браузер на самом деле явно выбирает содержание.

// create an editable DIV and append the HTML content you want copied
var editableDiv = document.createElement("div");
with (editableDiv) {
    contentEditable = true;
}     
editableDiv.appendChild(someContentElement);          

// select the editable content and copy it to the clipboard
var r = document.body.createTextRange();
r.moveToElementText(editableDiv);
r.select();  
r.execCommand("Copy");

// deselect, so the browser doesn't leave the element visibly selected
r.moveToElementText(someHiddenDiv);
r.select();   
6
задан Rigobert Song 19 August 2009 в 10:38
поделиться

8 ответов

1) Явный указатель this необходим только в том случае, если в противном случае ссылка была бы неоднозначной. Поскольку GetRuleViolations определено в типе, вам, скорее всего, не понадобится это .

Еще один момент заключается в том, что если GetRuleViolations вернет IEnumerable чего-то, вам будет гораздо лучше использовать Any () вместо Count () == 0 , поскольку вы рискуете перечислить всю последовательность.

2) Строка может быть выведена из инициализации.

3) Resharper предпочитает var определенным типам.

12
ответ дан 8 December 2019 в 13:01
поделиться

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

Я принадлежу к школе мысли, которая утверждает, что неважно, кто прав. Если мы все будем придерживаться шаблона, нам всем будет легче читать код друг друга.

Так что, по моему скромному мнению, не меняйте настройки resharper по умолчанию. Просто примите тот факт, что, используя настройки по умолчанию, вы упростите жизнь всем.

3
ответ дан 8 December 2019 в 13:01
поделиться

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

Я бы сказал - используйте var, когда вы знаете тип возвращаемого значения, и используйте правильный тип объекта, когда вам это не нравится:

var reader = new XmlReader(....  // Implicit
XmlReader reader = SomeClass.GetReader() // Explicit when you can't be sure
2
ответ дан 8 December 2019 в 13:01
поделиться

Я думаю, что первый предназначен для этой цели, если вы хотите сделать GetRuleViolations () статическим методом. Тогда вам не нужно удалять идентификатор «this».

1
ответ дан 8 December 2019 в 13:01
поделиться

Первый: Resharper просит удалить этот , что для меня просто стиль. Не более того, его сохранение никак не повредит производительности. Это просто вопрос удобочитаемости.

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

0
ответ дан 8 December 2019 в 13:01
поделиться

Первое кажется мне непонятным. Обычно не нужно добавлять префикс к этому. пока нет двусмысленностей, которых я не могу сказать из этого примера. Решарпер, наверное, прав. Два других не улучшат производительность, скомпилированный результат будет таким же. Это просто вопрос вкуса и, конечно же, ваших рекомендаций по кодированию.

0
ответ дан 8 December 2019 в 13:01
поделиться

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

Я считаю, что предложения 1 и 2 более читабельны, а 3 - менее читабельны, чем ваши исходный код.

Но вам не нужно просто следовать этим советам, если, например, вы сочтете их менее читаемыми или если они нарушают стандарт стиля кода вашей компании. Когда вы поместите курсор на волнистую линию, нажмите Alt-Enter, чтобы отобразить список контекстных действий. Одно из них - изменить строгость проверки; можно вообще не показывать или показывать как подсказку. Вы можете найти полный список проверок на ReSharper | Опции | Проверка кода | Уровень серьезности проверки .

0
ответ дан 8 December 2019 в 13:01
поделиться

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

Вам не нужно иметь возможность имитировать все - только службы, которые либо нарушают модульное тестирование (доступ к файлам и т. Д.), Либо который вы хотите протестировать с точки зрения реальных зависимостей. Если бы вы использовали его для аутентификации или чего-то в этом роде, это было бы совсем другое дело ... но просто выполняя прямую строковую операцию, которая не имеет абсолютно никаких возможностей настройки, различных вариантов реализации и т. д. - нет смысла рассматривать это как зависимость в обычном смысле.

Другими словами: если TruncateToSize были подлинный член String , не могли бы вы даже дважды подумать над его использованием? Вы также пытаетесь имитировать целочисленную арифметику, вводя IInt32Adder и т. Д.? Конечно нет. Это то же самое, только вы предоставляете реализацию. Модульное тестирование из TruncateToSize и не беспокойтесь об этом.

если бы TruncateToSize был подлинным членом String , вы бы даже дважды подумали, используя его? Вы также пытаетесь имитировать целочисленную арифметику, вводя IInt32Adder и т. Д.? Конечно нет. Это то же самое, только вы предоставляете реализацию. Модульное тестирование из TruncateToSize и не беспокойтесь об этом.

если бы TruncateToSize был подлинным членом String , вы бы даже дважды подумали, используя его? Вы также пытаетесь имитировать целочисленную арифметику, вводя IInt32Adder и т. Д.? Конечно нет. Это то же самое, только вы предоставляете реализацию. Модульное тестирование из TruncateToSize и не беспокойтесь об этом.

так что производительность останется прежней. Я некоторое время не использовал ReSharper и не знаю, почему он так агрессивно продвигает анонимные типы, но одно из преимуществ var заключается в том, что он более устойчив к изменениям.

Имеется в виду, если вместо вызова Method.GetNumber (), вы вызвали обертку, например. Фильтр (Method.GetNumber ()) в той же строке, которая возвращает значение Nullable, вам не придется обновлять тип переменной.

0
ответ дан 8 December 2019 в 13:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: