如何强制Resharper为自动生成的代码使用CLR类型名称
本文关键字:CLR 类型 代码 Resharper 何强制 自动生成 | 更新日期: 2023-09-27 18:13:35
根据通用命名惯例,CLR类型名称(例如String
、Int16
(的使用应优先于特定语言类型名称(string
、short
(的使用。我通常听从这个建议。然而,Resharper在生成代码时似乎使用了特定于语言的类型名称(重构,如提取方法、生成foreach循环等(,这非常令人讨厌。
如何强制Resharper使用CLR类型名称?
更新许多人想知道为什么有人会强制使用Int32
而不是int
或String
而不是string
的样式,其目的是更好的语法高亮显示:int被呈现为关键字,Int32被呈现为类型。由于修改高亮显示实现似乎有些过头了,所以强制执行CLR类型只需完成任务即可。这就是为什么这是我们风格指南的一部分的原因之一。
打开R#选项,转到C#代码样式。或者更详细地说:
RESHARPER
->Options
Code Editing
->C#
->Syntax Style
Build-in types
In locals, members and parameters, prefer
-CLR type name
Members to qualify
-CLR type name
旁白:你可能只想保护它Team Shared
,因为大多数公共项目更喜欢关键字(你不想因为建议使用这种风格的补丁而意外地惹恼OSS贡献者(。
旧版本
Code Editing
->C#
->Code Style
CCD_ 23->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
->CCD_ 27 CCD_;CCD_ 29->CCD_ 30->Prefer intrinsic predefined type keyword*
这些准则指的是api上的公共方法名称,例如obj.ReadInt32()
(可能在序列化程序中(。在代码(变量和参数(的主体中,它的指定较少。就我个人而言,我更喜欢别名double
、int
等,如:
- 更好地突出显示
- 较少打字
- 避免了非关键字用法的问题,即如果我有另一个方法/类型/属性等,称为
Int32
(愚蠢,但可能;其中int
始终表示global::System.Int32
( - 即使您没有
using System;
也有效
就我个人而言,我不会担心这件事。R#没有做错任何事情。
顺便说一句,注意有几个MS犯了这个错误的例子——脑海中浮现的是IDataReader
/DbDataReader
和GetFloat()
(应该是GetSingle()
(。
目前没有ReSharper选项更喜欢System.Int16
而不是short
等。YouTrack上有一个开放功能请求,您可以投票支持;但请注意,它已经开放了五年多,但没有得到实施,你可以选择将其视为一种暗示。
我知道这个问题已经得到了回答,但对于那些想知道未来首选样式的人,.NET团队现在正式建议使用语言名称而不是CLR名称,这是用于.NET Core开发的样式。
对于类型引用和方法调用(例如,
int.Parse
而不是Int32.Parse
(,我们使用语言关键字而不是BCL类型(例如,用int, string, float
代替Int32, String, Single
等(。
https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/coding-style.md