C清晰代码清理:resharper

时间:2010-12-30 16:45:48

标签: c# resharper

我刚刚使用了Resharper,这让我觉得好像我根本不知道如何在C#中编码;它给了我很多建议;其中很少是:

1)SomeObject o = new SomeObject();

Resharper将转换为:

var o = new SomeObject()

2)this.Loaded += new RoutedEventHandler(MainPage_Loaded);

this.Loaded += MainPage_Loaded;

3)转换我的变量并将_放在所有实例变量之前。

4)删除班级父母的名字。我在Silverlight上测试了这个。

public partial class MainPage : UserControl

public partial class MainPage

5)替换实例变量

 this.variable = somevalue

 variable = somevalue

所有这些都非常必要吗?它真的会影响我的程序的效率吗?我的意思是用var关键字替换我的类名会有什么好处。在编译时,所有var也被类名替换。它是否正在进行,因为 已被编程为执行或做这些事情是否真的以某种方式影响?

4 个答案:

答案 0 :(得分:8)

此行为在ReSharper设置中均可配置。有各种代码清理规则(例如是否用var替换用法 - 我不用!),代码样式规则(例如变量命名)和格式规则(例如如何放置大括号)。

我写了一篇文章,概述了这些设置以及它们如何用于形成编码标准,然后通过代码清理自动应用:

http://gojisoft.com/blog/2010/05/10/coding-standards-using-resharper/

在一天结束时,很多人都关心编码风格和删除冗余代码,它们对编译代码没有影响。您可以配置其中许多适合您或您团队的编码风格。

答案 1 :(得分:5)

  

所有这些都非常必要吗?

没有必要。

  

它真的会影响我的节目效率吗?

它不会以改变性能或语义的方式影响已编译的代码。

  

我的意思是通过用var关键字替换我的类名会有什么好处。毕竟var在编译时也被类名替换。

更易读的代码。

  

它是否正在进行,因为它已被编程为执行或执行这些操作确实以某种方式或其他方式影响?

是。如果你不喜欢它们,可以配置它们。

1)没关系。

SomeObject o = new SomeObject();

第一个SomeObject是多余的,没用,而且var它的可读性和可读性更强。另外还有复杂的定义,如

var dictionary = new Dictionary<string, Dictionary<string, List<string>>();

它比替代方案更具可读性。但是,这可能过头了。例如

string s = "s";

优先于

var s = "s";

原样

var i = 5;

int i = 5;

请注意

var i = 2147483648;

真的很糟糕,因为它不能立即清楚i的类型是什么。对于非复杂的定义,我更喜欢使用显式类型而非隐式类型。此外,有时你想说

IFoo foo = new Foo();

明确键入foo IFoo,而var则将其键入Foo

2)通常更少的代码是更好的代码。

3)我讨厌这个建议。我讨厌领先的下划线。我为成员变量使用通常的命名约定,为了清楚起见,我在前面加上this。我会关掉这个。

public SomeObject(string name) {
    this.name = name;
}

更具可读性
public SomeObject(string name) {
    _name = name;
}

在我看来。

4)等等,为什么这样做?我有点困惑这个。因为它是部分的,并且类定义的另一部分具有继承性?我无法想象它会在改变语义的情况下这样做。我会关掉这个。

5)我不喜欢这个(见3.)

答案 2 :(得分:3)

他们没有必要。

它们遵循resharper设定的编码标准。好处是您可以按照自己的方式配置编码标准。

关于resharper的美妙之处在于,你最终会以某种方式学习不同的做事方式。

答案 3 :(得分:2)

所有这些更改对编译的CIL代码都没有任何影响 - 它们只是ReSharper对C#代码本身可读性的看法。

您可以调整所有这些设置以满足您或部门的需求。在大多数情况下,这是个人偏好的问题。