为什么Resharper不建议删除冗余的访问修饰符?

3

Resharper非常优秀,这是众所周知的。

然而,如果我声明一个方法如下:

private void MethodName() { //code in here }

或者是一个枚举:

public enum SomeEnum { Value1, Value2 }

为什么Resharper不建议删除冗余访问修饰符...原因是什么?


4
明确表述这些事情会更好。这样可以避免混淆,并且在编辑时几乎不耗费时间,在编译时也不需要额外的时间。 - ChrisF
3
请不要从您的代码中删除这些内容!它们在每种语言中都不相同,并且使其明确表达总是更好的。这是一种情况,其中冗余并没有带来任何负面影响,而实际上可以提高可读性。 - Cody Gray
4
这有点争议,因为明确表达什么更重要是主观的,而且并不是所有东西都需要明确表达。 - nicodemus13
好问题,但是你例子中的修饰符public并不是多余的。如果枚举类型没有嵌套在其他类型中,则默认为internal;如果嵌套在类中,则默认为private。枚举的成员默认情况下是公共的,甚至指定它们的访问权限是非法的:enum SomeEnum { public Value1, public Value2, }将无法编译。 - Jeppe Stig Nielsen
1
我不喜欢前两个回复,@nicodemus13。你的评论是正确的:“更好”在观察者的眼中。我想要一个选项来做这样的事情。有很多选择。我发现这个问题是为了让冗余的括号引发警告。同样的问题:我希望它能够这样做。我只想知道是否有这个选项。现在只是一个建议。 - vbullinger
3个回答

7
很可能是因为您按照以下方式进行了配置:ReSharper ->选项 ->语言 -> C# ->格式化样式 ->其他 ->使用显式的私有/内部修饰符。

1
这是默认设置。不过还是谢谢你的提醒。 - nicodemus13
在Resharper Ultimate 10中,现在看起来路径是:ReSharper -> 选项 -> 代码编辑 -> C# -> 代码风格 -> 修饰符 -> 偏好显式/隐式的内部/私有修饰符类型。 - Daniel Neel

5

它也不建议删除冗余注释。它认识到代码文件的一些内容,虽然在技术上对编译器来说是多余的,但可以增强代码的可读性和可维护性。


1
当您说“冗余”注释时,我想您指的是空注释;) 它还不够聪明,无法确定某些程序员的注释实际上没有任何语义价值! - nicodemus13
1
不,我只是指评论和访问修饰符(如果是默认的话)对编译器来说同样是多余的。它们只对程序员有信息意义。顺便说一句,Resharper确实建议删除空注释,因为它知道这对程序员也是多余的! - Flynn1179

1

默认情况下,不具备访问修饰符是 StyleCop 违规(如果您足够挑剔以开启所有规则)。


2
那么为什么要设置默认值呢? - nicodemus13
1
对于那些懒惰、时间紧迫或不关心StyleCop最挑剔的人来说,这很有用! - Jackson Pope

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