在试图获得所有绿色时,我得到了Resharper的以下建议.
原始代码:
static public string ToNonNullString(this XmlAttribute attr) { if (attr != null) return attr.Value; else return string.Empty; }
建议:删除多余的"其他",导致以下内容:
static public string ToNonNullString(this XmlAttribute attr) { if (attr != null) return attr.Value; return string.Empty; }
对我来说,建议的版本似乎不如原始版本可读.Resharper建议是否反映了良好可维护代码的定义?
技术上的Resharper是正确的,因为"else"是不必要的,我更喜欢前一版本,因为意图更明显.
话虽如此,我宁愿选择:
return attr != null ? attr.Value : string.Empty;
啊,代码美学.圣战时间.(鸭)
我会选择?:表达式:
return attr != null ? attr.Value : String.Empty
或者反转if并删除换行符以产生一个保护条款:
if (attr == null) return String.Empty; return attr.Value;
我认为如果你反转if,新版本要好得多
static public string ToNonNullString(this XmlAttribute attr) { if (attr == null) return string.Empty; return attr.Value; }
因为您的原始版本太对称,而null-case是一种特殊情况.
新版本在"大部分时间返回的内容"方面更具可读性.
我同意您的代码的第一个版本更具可读性.
我发现在这些情况下Resharper的建议并不总是有用,尽管有时它可以清理.这就是为什么我配置Resharper将变化显示为"提示"而不是"建议".这会导致绿色下划线不太明显,并且不会在右侧边栏中突出显示.
如果你不喜欢ReSharper建议的方式,只需禁用特定的建议(斜线警告斜线提示).编码风格也是如此,我认为编码风格具有很高的可配置性.声称ReSharper无法使用(引用"我很高兴地说它没有生存,这里没有人再使用它了")只是因为你不花5分钟才知道如何配置它只是简单的愚蠢.
当然你不应该让某些工具决定你的编码风格的某些部分,而ReSharper如果你告诉它不要这样做.就这么简单.