如何移除单行语句中的大括号?

4

有谁能提供一个方法,用于删除单行语句中的花括号?(不包括手动删除花括号这种显而易见的方式)

使用Visual Studio中的C#。

因此,代码不再是这样:

if (thingy is null)
{
    throw new ArgumentNullException(nameof(thingy));
}

提供备选方案:

if (thingy is null)
    throw new ArgumentNullException(nameof(thingy));

我已经尝试运行CodeMaid并更改CodeCleanup(只是将其改回了括号格式)。 我很乐意尝试任何推荐的扩展等来解决这个问题。

3
你可以在你的 .editorconfig 文件中使用 csharp_prefer_braces = false 来设置这个选项:https://learn.microsoft.com/en-us/visualstudio/ide/editorconfig-language-conventions?view=vs-2019#code-block-preferences - canton7
1
据我所知,这是不好的编码实践,你应该避免这样做。也许只需将其写在一行中,即 if (tingy is null) {DoStuff();...} - Honduriel
1
在我(和我的同事)看来,这使得代码更难阅读,因此更难维护。 - Honduriel
2
因此,这是个人观点,而不是糟糕的编码实践...在另一端的光谱上,我们发现它更容易阅读,因为您可以立即通过缺少大括号来识别它作为单行语句,而任何带有大括号的语句都比单行语句更长。 - craig157
2
这是VS中的一个错误,我依稀记得可能有几年前就已经报告了,但至今没有改变。代码清理具有“为单行控制语句添加/删除大括号”的功能,但它不起作用。上面提到的配置设置只在相反方向上起作用,它仅允许没有大括号的情况,但不强制执行。应该再次报告此问题。是的,我知道,有一个关于它是不好的做法的传说,但事实并非如此,这显然是个人选择,IDE不应强加自己的选择,特别是如果它承诺相反的结果。 - Gábor
显示剩余4条评论
3个回答

5
如果您正在使用Visual Studio 2019预览版,那么您只需要2个简单的步骤就可以实现您的需求。

enter image description here enter image description here


1
很遗憾,目前只能在VS社区版上使用。但我会检查这些选项是否可用。谢谢@Chandrapakash - craig157
1
@craig157 这个功能在 Visual Studio 2019 的所有版本中都可用,包括 Community、Professional 和 Enterprise 版本。 - Chandraprakash

3
这不是Visual Studio的标准重构。但是有一些扩展可以添加此功能。
例如,Roslynator有它的移除大括号重构。

谢谢Richard。现在如果我让智能感知添加一个Null检查,它会按照所需的格式添加。 - craig157

-6
你不应该养成在单行条件语句中省略大括号的习惯。这样很容易出现小错误,导致后面需要处理的 bug。
现在我要下台了,分享一个更简短的空值保护机制。
public void MyFunction(object thingy)
{
   _ = thingy ?? throw new ArgumentNullException(nameof(thingy));
   etc...

简洁明了,没有遗漏大括号的风险。对于字符串,我将使用扩展方法来实现同样的一行代码。
  public static string NullIfWhiteSpace(this string s)
  {
      return string.IsNullOrWhiteSpace(s) ? null : s;
  }

然后我可以做:
public void MyFunction(string stringy)
{
   _ = stringy.NullIfWhiteSpace() ?? throw new ArgumentNullException(nameof(stringy));
   etc...

我对空列表和字典做类似的操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接