命名样式
JetBrains Rider 帮助您定义、控制和应用代码中符号的命名样式。 有一组规则,每条规则针对具有约束条件的特定标识符(例如,一条规则可以针对静态私有只读字段)。 每条规则可以有一个或多个关联样式,这些样式定义了复合词的大小写、下划线、后缀、前缀等。
当 JetBrains Rider 使用 代码补全和 代码生成功能生成新代码时,应用 代码模板并执行 重构时,会考虑这些规则。 JetBrains Rider 还帮助您 检测并修复命名规则的违规情况。 如果需要,可以 配置或禁用 命名规则的自动检查。
配置命名规则
开箱即用,JetBrains Rider 提供了一组涵盖所有标识符类型的命名规则。 这些规则基于 Microsoft 命名指南、 .NET 平台编码样式和各种最佳实践。
如果您的个人偏好或公司标准与 JetBrains Rider 的默认值不同,您可以以灵活的方式配置命名样式:对于每种类型的标识符,您可以选择大小写规则、前缀和后缀、不同访问权限的变体、要忽略的缩写等。
您的命名样式偏好通过 基于层的设置机制保存。 此外,该机制允许您为不同的解决方案维护不同的偏好,并将这些偏好保存在 VCS 中,自动与团队成员共享。
命名规则的属性
每条命名规则具有以下属性:
规则描述 :一个任意描述,帮助理解规则的适用范围。
应用此样式 :规则允许的一个或多个命名样式。 使用相应的按钮添加或删除样式。
在列表中选择一个样式时,在 样式 选择器中选择基础样式,例如
UpperCamelCase或lowerCamelCase,并可选地添加前缀和后缀。当单条规则有多个样式时,如果符号名称至少匹配其中一个样式,JetBrains Rider 不会 报告代码样式违规。 否则,JetBrains Rider 会检测到代码样式违规,并建议根据默认样式(列表中的第一个样式)重命名符号。 要更改默认样式,请使用 上移 和 下移 按钮。
至以下元素 :此区域定义了命名规则的适用范围。 使用相应的复选框指定必须符合规则的类型和具有哪些修饰符的成员。
启用检查 :此复选框允许您禁用与此规则相关的 报告代码样式违规,同时仍允许 JetBrains Rider 检测其他命名规则违规。
当此复选框被禁用时,当 JetBrains Rider 使用 代码补全和 代码生成功能生成新代码,应用 代码模板并执行 重构时,该规则仍会被遵守。 还有几种方法可以 禁用所有命名规则的自动检查。

修改命名规则
如果现有规则对您的命名约定不够细化,您可以添加更多规则。 例如,您可能希望枚举使用大写驼峰命名法并带有 E 前缀。
添加命名规则
任何命名规则都可以被移除。 移除规则的潜在后果是某些类型的标识符将不受任何规则的覆盖。 在这种情况下,当 JetBrains Rider 使用 代码补全和 代码生成功能生成新代码,应用 代码模板并执行 重构时,JetBrains Rider 将应用其内部默认值。
To remove a rule, select it on the page of JetBrains Rider 设置 Ctrl+Alt+S and click Delete.
使用 EditorConfig 配置命名规则
如果您 使用 EditorConfig来维护项目的代码样式,您还可以从 .editorconfig 文件中配置命名规则。
要从 EditorConfig 配置命名规则,您需要在 JetBrains Rider 设置 的 页面上选择 从 editorconfig、项目设置和规则集中读取设置 复选框 Ctrl+Alt+S。
您还可以将已在 JetBrains Rider 设置中配置的命名样式 导出到 .editorconfig 文件。
.editorconfig 文件中的命名样式设置是使用 .NET 命名约定的属性配置的: dotnet_naming_rule.*、 dotnet_naming_style.*、 dotnet_naming_symbols.*——如果指定的 符号类型可以与 JetBrains Rider 命名设置中可用的符号类型匹配,则会生效。
此外,JetBrains Rider 可以使用许多自定义属性来支持 .NET 命名约定未涵盖的情况。 这些属性主要出现在您导出 JetBrains Rider 命名设置时的 .editorconfig 文件中。
import_to_resharper此后缀允许指定是否应由 JetBrains Rider 忽略特定属性(
true或false)。当 JetBrains Rider 将其设置导出到 editorconfig 时,它还可能写入
as_predefined——请勿手动更改。 示例:dotnet_naming_rule.protected_rule_rule.import_to_resharper = falseresharper_description允许为工具提示指定规则描述。 示例:
dotnet_naming_rule.protected_rule_rule.resharper_description = Somethingresharper_guidJetBrains Rider 可以在导出时使用此属性,请勿手动更改。 示例:
dotnet_naming_rule.protected_rule_rule.resharper_guid = eb5720f3-bc0a-442d-9f3c-8dc32b7c5c12resharper_style允许指定可能的样式列表,这些样式可以扩展 .NET 命名样式列表。 每种样式可以是“style”或“prefix + style + suffix”或“prefix + style”或“style + suffix”。
样式可以是
AaBb、AaBb_AaBb、AaBb_aaBb、aaBb、aaBb_AaBb、aaBb_aaBb、AA_BB、aa_bb、Aa_bb之一。您可以在列表末尾添加
:do_not_check以禁用检查。示例:
dotnet_naming_rule.protected_rule_rule.resharper_style = AA_BB, aa_bb, I+AaBb, aaBb_AaBb, AaBb+Localresharper_applicable_kinds应用命名规则的标识符类型:
命名空间、类型、test_type、class、pure_class、record、结构体、interface、delegate、enum、type_member、test_member、method、async_method、extension_method、属性、event、any_field、字段(简单字段,非只读或常量)、readonly_field、constant_field、unity_serialised_field(如果启用了 Unity 支持插件)、enum_member本地、local_variable、catch_variable、local_constant、parameter、lambda_parameter、标签、type_parameter、local_function。示例:
dotnet_naming_symbols.protected_rule_symbols.resharper_applicable_kinds = pure_classresharper_required_modifiers静态、实例(无、其中之一或两者)。 示例:dotnet_naming_symbols.protected_rule_symbols.resharper_required_modifiers = static, instanceresharper_csharp_naming_rule使用与
resharper_style相同的值,但此设置只能用于指定预定义规则之一:types_and_namespaces、接口、type_parameters、method、属性、event、本地、local_constants、参数、public_fields、private_instance_fields、private_static_fields、常量、private_constants、static_readonly、private_static_readonly、enum_member、local_functions、其他。示例:
resharper_csharp_naming_rule.private_instance_fields = I+AaBb_AaBb,_+aaBb:do_not_check
根据 EditorConfig 约定,JetBrains Rider 将应用定义在 .editorconfig 文件中的命名规则,这些文件位于当前文件的目录及其所有父目录中,直到到达根文件路径或找到带有 root=true 的 EditorConfig 文件。 在 .editorconfig 文件中指定的文件掩码,例如 *Test.cs ,也会被考虑在内。
忽略与 CamelCase 命名样式冲突的大写缩写
有时,您可能希望在 CamelCase 符号名称中使用大写缩写、首字母缩写词或首字母缩写(例如 MS代表 MicroSoft)。 默认情况下,JetBrains Rider 报告这为不一致的驼峰命名,因为连续出现了多个大写字母:
![]()
为避免这种情况,您可以配置要被不一致命名检查忽略的缩写列表。
需要注意的是,大写缩写不应与为特定标识符类型定义的命名样式相矛盾。
例如,如果您将 MS 添加到忽略的缩写中, MSBuilder 将是 UpperCamelCase 样式标识符的可接受名称,但不是 lowerCamelCase 或 all_lower 命名样式标识符的可接受名称。
同样, myMSBuilder 对于 lowerCamelCase 是可以的,但对于 UpperCamelCase 样式的标识符则不行。
将缩写添加到忽略列表
如果您有许多应在符号名称中允许的缩写,可以编辑忽略缩写列表。
编辑忽略缩写列表
按 Ctrl+Alt+S 或从菜单中选择 (Windows 和 Linux)或 (macOS),然后在左侧选择 。
单击 … ,位于 缩写 旁边。
输入一个缩写并单击 添加。 对所有必要的缩写重复此操作,然后单击 确定。
或者,手动编辑 缩写 字段,使用空格作为分隔符。
在 设置 对话框中点击 保存 以应用修改,并让 JetBrains Rider 选择保存位置,或者通过从 保存 选择器中选择特定设置层来保存修改。 如需了解更多信息,请参见 基于层的设置。
检测并修复命名规则的违规
JetBrains Rider 使用“不一致命名”代码检查来检测代码中命名规则的违规。 默认情况下,此检查始终在 设计时代码检查期间应用,并在编辑器中将检测到的违规高亮为 警告。 例如,根据默认样式,接口的名称应具有“I”前缀。 如果接口名称不符合此规则,JetBrains Rider 会高亮显示此名称,并在您将鼠标悬停在其上时通知您问题所在:

如果您想查找当前文件之外的命名样式违规,可以在项目或整个解决方案中运行“不一致命名”检查。
在特定范围内查找命名样式违规
对于编辑器中高亮显示的大多数命名样式违规,JetBrains Rider 会建议一个符合要求的名称的 快速修复。 您可以按 Alt+Enter 并在操作列表中选择 重命名为 [符合规范的名称]。

还可以使用 范围内修复功能在当前文件、项目或解决方案中自动更正命名样式违规。
但是,如果具有计算出的符合命名的符号已存在于同一命名空间中,则不会建议快速修复。 您可以使用 重命名重构 修复此类符号的命名。
配置和禁用命名规则的自动检查
如果您不希望 JetBrains Rider 检查现有代码库中的命名样式,可以禁用负责此检查的代码检查,或禁用特定规则的自动检查。 但是,即使禁用了自动检查,当 JetBrains Rider 使用 代码补全和 代码生成功能生成新代码,应用 代码模板并执行 重构时,所有命名规则仍会被遵守。
禁用命名样式的自动检查
清除 JetBrains Rider 设置 的 页面 Ctrl+Alt+S 上的 启用“命名不一致”检查 复选框。
在 JetBrains Rider 设置 的 Ctrl+Alt+S 页面 上,开始输入“不一致命名”,然后清除与相应代码检查对应的复选框。
如果您在解决方案中 使用 .editorconfig ,可以在特定范围内禁用 “不一致命名”检查:
resharper_inconsistent_naming_highlighting=none
禁用特定命名规则的自动检查
在 Rider 设置 Ctrl+Alt+S 中,转到 并打开 命名 选项卡。
双击列表中所需的规则。
在打开的 编辑规则设置 对话框中,清除 启用检查 复选框。
在 设置 对话框中点击 保存 以应用修改,并让 JetBrains Rider 选择保存位置,或者通过从 保存 选择器中选择特定设置层来保存修改。 如需了解更多信息,请参见 基于层的设置。
从现有代码中使用 C# 命名规则
如果您从公共仓库签出解决方案或临时加入一个已建立不同代码命名样式的团队,您可能希望遵循此解决方案中的命名规则,但同时不更改全局配置的命名规则。
JetBrains Rider 会自动处理此类情况——当您打开一个符号命名与全局设置不同的新解决方案时,它会检测与全局设置不同的命名规则,相应地修改这些规则,然后将修改后的规则保存到 “解决方案个人”设置层 (位于解决方案旁边的 .sln.DotSettings.user 文件中)。
如果在打开新解决方案时发生这种情况,JetBrains Rider 会在编辑器中显示通知:

您可以单击 配置 以打开相应的设置页面()。 在此设置页面上,根据解决方案代码更改的规则会以黄色高亮显示。 如果您想使用 JetBrains Rider 的 默认命名规则或以自己的方式 配置命名样式 ,请清除 使用自动检测的规则 复选框。

处理 Visual Studio 的事件命名样式
默认情况下,JetBrains Rider 为字段上的事件订阅建议 $object$On$event$ 命名模式,为 this 上的事件订阅建议 On$event$ 命名模式,这些模式既用于 JetBrains Rider 生成新事件时,也用于检查现有事件的命名样式时。 如果需要,您可以在 JetBrains Rider 设置 的 页面上更改这些模式。
当 Visual Studio 生成新事件时,它使用另一种命名模式: $object$_$event$。 如果您有一个现有项目,其中的事件是以这种方式命名的,并且您不想重命名它们,请确保在 JetBrains Rider 设置 的 页面上选择 支持 Microsoft 事件命名样式 复选框。 这将抑制这些事件上的“不一致命名”警告。


