Как заставить Resharper использовать имена типов CLR для автоматически сгенерированного кода?
В соответствии с Общие соглашения о присвоении имен использование наименований типов CLR (например, String
, Int16
) должно быть предпочтительнее использования имен типов конкретных языков (String
, short
). Я обычно следую этому совету. Тем не менее, Resharper, по-видимому, использует специфичные для языка имена типов при генерации кода (рефакторинг, такой как метод extract, генерация циклов foreach и т.д.), Что очень раздражает.
Как заставить Resharper использовать имена типов CLR вместо?
Update
Поскольку многие задаются вопросом, почему кто-то будет применять стиль, в котором используется Int32
вместо int
или String
вместо String
, целью было лучшее выделение синтаксиса: int отображается как ключевое слово, Int32 отображается как тип. Поскольку изменение реализации подсветки кажется излишним, принудительное использование CLR-типа просто выполняет эту работу. Это одна из причин, почему это является частью нашего руководства по стилю.
Ответы
Ответ 1
Откройте параметры R #, перейдите в С# Code Style. Или более подробно:
RESHARPER
→ Options
Code Editing
→ C#
→ Code Style
Build-in type naming
→ When referencing build-in type, prefer using
выберите CLR type name
Для этой функции требуется R # 9.1 или выше.
Если вы привязаны к более старым версиям ReSharper
Было выделено расширение для R # 4.5-5.1 с учетом этой цели. Он называется Neovolve. К сожалению, это расширение не было перенесено на более поздние версии R #.
VS 2015
Также для Visual Studio 2015 вы можете отключить, чтобы предпочесть встроенные предопределенные типы (что приводит к тому, что символы будут выделены серым цветом в текстовом редакторе) в разделе Tools
→ Options
Text Editor
→ C#
→ Code Style
→ Prefer intrinsic predefined type keyword*
Ответ 2
Эти рекомендации относятся к именам общедоступных методов на вашем api, например obj.ReadInt32()
(возможно, в сериализаторе). В теле кода (переменные и параметры) он меньше указан. Лично я предпочитаю псевдонимы double
, int
и т.д. - как:
- лучшее выделение
- меньше ввода
- позволяет избежать проблем с использованием не ключевого слова, т.е. если у меня есть другой метод/тип/свойство/etc, называемый
Int32
(глупо, но возможно, где-как int
всегда означает global::System.Int32
)
- работает, даже если у вас нет
using System;
Лично я бы не стал беспокоиться об этом. R # не делает ничего плохого.
В качестве примечания - обратите внимание, что есть несколько примеров того, как MS ошибается - один, который бросается в голову, - это IDataReader
/DbDataReader
с GetFloat()
(должно быть GetSingle()
).
Ответ 3
В настоящее время нет опции ReSharper, которая предпочитает System.Int16
over short
и аналогичную. Существует открытый открытый запрос функции на YouTrack, за который вы можете проголосовать; но обратите внимание, что он открыт более пяти лет, не будучи реализованным, что вы можете выбрать в качестве подсказки.