【问题标题】:ReSharper - force curly braces around single lineReSharper - 在单行周围强制使用花括号
【发布时间】:2010-09-01 21:19:12
【问题描述】:

当花括号不用于包围单行代码块时,我能否配置 ReSharper 以修复 C# 代码,如下所示:

if (blnSomeCondition)
   DoSomething();  // complain

if (blnSomeOtherCondition)
{
   DoSomethingElse(); // don't complain
}

谢谢

【问题讨论】:

  • 好问题,但第一种语法有什么问题?花括号是不必要的。
  • 一些开发人员认为,在单行代码块周围包含花括号是更好的做法,因为它更具可读性和可维护性。
  • 另外,我已经看到有多少次不使用花括号导致了错误。有人进行了更改,看到了 if 并添加了一个新行,但没有意识到它不会作为条件的一部分执行。这很微妙,但已经发生了。
  • 我对第一种格式并没有真正的问题,但我可以看到它可能会导致 Hadi 提到的场景中的错误。我们的团队决定这是我们希望执行的编码标准,这就是我提出这个问题的原因。
  • 我个人的偏好是不要将大括号用于单行'if',而是将'if'和以下语句放在同一物理行上,例如'如果(blnSomeCondition)做某事();'。

标签: c# resharper


【解决方案1】:

在新版本的 ReSharper (2016.x) 中已移至代码样式。

UPD1:适用于 ReSharper 2017.x

UPD2:适用于 ReSharper 2018.x

UPD3:适用于 ReSharper 2019.x

UPD4:适用于 ReSharper 2020.x

【讨论】:

    【解决方案2】:

    如果它可以帮助其他人节省时间,在我公司的一台机器上,尽管他的帖子质量很好,但遵循 Sergey 的建议是不够​​的。

    在相关设置(VS2017,R# 2019,都是最新的)这些 R# 端的设置已经很好,但我还必须在 Visual Studio 选项中修改它:

    • 在选项窗口中,转到文本编辑器 -> C# -> 代码样式 -> 格式 -> 常规,
    • 勾选“执行附加代码清理 在格式化期间”和“为单行控件添加/删除大括号 声明

    【讨论】:

      【解决方案3】:

      Ryan 是正确的(但请注意,他的链接指的是 R# 2.0 帮助)。具体流程如下:

      1. 转到 ReSharper > 选项 > 语言 > C# > 格式化样式 > 大括号布局
      2. 将“if-else”语句中的大括号设置为“对多行使用大括号”
      3. 保存更改后,选择要重新格式化的范围(可以是代码选择、文件、文件夹、项目、解决方案 - 任何您想要的)。
      4. 选择 ReSharper > 工具 > 清理代码。
      5. 利润。

      请记住,代码清理可以做很多事情,而且它们不仅与代码格式有关(详情请参阅 http://www.jetbrains.com/resharper/webhelp/Code_Cleanup__Index.html),因此请明智地使用该功能。

      【讨论】:

        【解决方案4】:

        您可以按照屏幕截图所示进行配置。

        PS:对于那些看 Imgur.com 网址有问题的人 -> https://ibb.co/b4xijT

        【讨论】:

          【解决方案5】:

          适用于 ReSharper 2016.2.2

          您应该编辑您的个人资料以进行清理。正确的项目称为为“if-else”、“for”、“foreach”、“while”、“do-while”、“using”中的单个语句添加/删除大括号。此项可在 C# => 代码样式 项中找到。

          如果该项被选中,将添加大括号;如果未选中,大括号将被删除。

          注意:添加现在不起作用(不知道为什么 - 也许是 ReSharper 的版本太新了)。 但是,如果您取消选中提到的项目,则单个语句周围的现有大括号不会被删除。

          UPD:问题解决了,看这篇帖子的前两个cmets。

          【讨论】:

          • 这在 2016.3.2 中的工作方式略有不同 - 在选项下,转到 代码编辑 --> C# --> 代码样式 --> 大括号 --> 在“If”语句中,然后在 Preference 下选择“Enforce always”。其他选项是“不强制”、“如果正文是多行则强制”、“如果语句是多行则强制”等。
          • 不错。谢谢!在这些设置之后,我描述的清理工作正常。
          【解决方案6】:

          Gorohoroh 的解决方案很接近,但我没有选择“为多行使用大括号”,而是选择了“添加大括号”来强制它在单行场景中添加大括号。而且我必须在“强​​制大括号”下的所有六个下拉菜单中设置它以捕捉所有场景:

          我真正希望的是能够将 ReSharper 设置为在违反规则时发出黄色警告或红色错误,但我还没有找到方法来做到这一点。因为你是对的,Gorohoroh,清理代码做了很多事情,我希望可以选择一次查看并修复违反规则的行为。

          感谢您的帮助!

          【讨论】:

            【解决方案7】:

            好吧,它又被移动了。新位置位于 ReSharper 2020.01 版本的语法样式下。

            转到ReSharper > Options > Code Editing > C# > Syntax Style > Braces

            这是 ReSharper 2020.01

            的屏幕截图

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-05-31
              • 1970-01-01
              • 2019-10-12
              • 1970-01-01
              • 2016-06-06
              • 1970-01-01
              • 2018-11-17
              • 1970-01-01
              相关资源
              最近更新 更多