【问题标题】:ReSharper syntax suggestionReSharper 语法建议
【发布时间】:2009-01-12 09:24:45
【问题描述】:

以下语句中的 if 关键字被 ReSharper 用绿色下划线:

if (readOnlyFields.Contains(propertyName)) return false;

return base.CanWriteProperty(propertyName);

ReSharper 建议进行以下更改:

return !readOnlyFields.Contains(propertyName) 
    && base.CanWriteProperty(propertyName);

为什么这“更好”?我发现当前代码更具可读性,据我所知,结果应该是相同的。有什么想法吗?

【问题讨论】:

    标签: c# visual-studio-2008 syntax resharper


    【解决方案1】:

    两者都不是更好,因为任何一个都会比另一个表现更好。 (任何差异都将完全可以忽略不计。)

    某些编码约定建议您为每个函数使用一个返回语句,以便于理解它的流程。不过,这不是一个硬性规定,在这种情况下,发生了什么很明显。如果您不喜欢它的建议,但您想确保其他人可以轻松阅读您的代码,我建议您执行以下操作:

    if (readOnlyFields.Contains(propertyName)) return false;
    else return base.CanWriteProperty(propertyName);
    

    但你的方式也很好。

    【讨论】:

      【解决方案2】:

      在快速修复菜单(Alt+Enter)上,有一个“更正选项”(或类似的东西)。您可以将此具体建议转化为提示,或将其完全关闭。

      就个人而言,我更喜欢您的原件而不是 ReSharper 的建议。

      【讨论】:

      • 感谢提示关闭它。我选择暂时保持打开状态,但至少我知道如果我愿意我可以关闭它:)
      【解决方案3】:

      有些人讨厌从函数中获得多个返回。

      所有对编程的厌恶似乎都随着时间的推移而起起伏伏,而这种特殊的厌恶目前并不是特别流行。

      【讨论】:

        【解决方案4】:

        在这种情况下,“可读性”很大程度上受读者个人风格的影响。一旦你习惯了以某种格式写东西,你也会习惯于以同样的方式阅读它。

        例如,我会接受 ReSharper 的建议。但这只是个人喜好问题,再加上我在行尾发现 return 语句也不是非常易读的事实。当所有关键字都在行首时,扫描代码会稍微容易一些。

        同样,没有“真正的答案”。您可以禁用该建议并使用您习惯的任何内容。

        【讨论】:

          猜你喜欢
          • 2011-04-10
          • 2012-05-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多