簡體   English   中英

C清晰代碼清理:resharper

[英]C sharp code cleanup : 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在編譯時也被類名替換。 這樣做是因為它被編程為執行或做這些事情是否真的以某種方式影響?

此行為在ReSharper設置中均可配置。 有各種代碼清理規則(例如,是否用var替換用法 - 我沒有!),代碼樣式規則(例如變量命名)和格式規則(例如如何放置大括號)。

我寫了一篇文章,概述了這些設置以及它們如何用於形成編碼標准,然后通過代碼清理自動應用:

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

在一天結束時,很多人都關心編碼風格和刪除冗余代碼,它們對編譯的代碼沒有影響。 您可以配置其中許多適合您或您團隊的編碼風格。

所有這些都真的有必要嗎?

沒有必要。

它真的會影響我的程序的效率嗎?

它不會以改變性能或語義的方式影響已編譯的代碼。

我的意思是用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();

顯式地鍵入fooIFoovar會將其鍵入為Foo

2)較少的代碼通常是更好的代碼。

3)我討厭這個建議。 我討厭領先的下划線。 我對成員變量使用通常的命名約定,為了清楚起見,我在前面加上this 我會關掉這個。

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

比...更具可讀性

public SomeObject(string name) {
    _name = name;
}

在我看來。

4)等等,為什么這樣做? 我有點困惑這個。 因為它是部分的,並且類定義的另一部分具有繼承性? 我無法想象它會在改變語義的情況下這樣做。 我會關掉這個。

5)我不喜歡這個(見3.)

它們不是必需的。

它們遵循resharper設定的編碼標准。 好處是您可以按照自己的方式配置編碼標准。

關於resharper的美妙之處在於,你最終會以某種方式學習不同的做事方式。

所有這些更改對編譯的CIL代碼都沒有任何影響 - 它們只是ReSharper對C#代碼本身可讀性的看法。

您可以調整所有這些設置以滿足您或您部門的需求。 在大多數情況下,這是個人偏好的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM