2009-08-19 92 views
6

我剛安裝整形器4.5,它想出了以下建議:Resharper是否正確?

return this.GetRuleViolations().Count() == 0; -- REMOVE this. 

new string[] { this.ID.ToString(), this.Registration } -- REMOVE string, MAKE ANONYMOUS TYPE 

int i = Method.GetNumber(); -- REPLACE int WITH var 

我應該做這些?

我認爲在某些情況下,它會使代碼不易讀,但會提高性能嗎?做出這些改變有什麼好處?

感謝

+1

只有一首Rigobert歌曲。一定要在這個論壇上查看這個subquestions的各種dup事件。 – 2009-08-19 10:50:47

+1

嘗試安裝StyleCop和StyleCop-for-ReSharper,它將爲您提供Microsoft推薦的編碼風格指南。你需要調整R#的規則來匹配。至於var的使用,我們總是在內部使用它,因爲它在我們看來有助於可讀性 - 類型是針對編譯器的,而不是人類。 – 2009-08-19 11:00:25

+1

嗯。我總是使用這種類型 - 我想我覺得你應該知道你從lambda表達式中得到什麼,如果你直接指定它,它會有所幫助。 – Yablargo 2012-07-13 01:44:15

回答

12

1)顯式this指針只在必要時引用的將否則會模棱兩可。由於GetRuleViolations被定義在該類型上,因此很可能不需要this

另外這裏的一點是,如果GetRuleViolations回報的東西的IEnumerable,你一般會好得多使用Any()代替Count() == 0,否則可能枚舉整個序列。

2)字符串可以從初始化推斷。

3)ReSharper的偏好var超過特定類型。

+0

+1 - 尼斯提示使用任何()謝謝 – 2009-08-19 10:51:42

0

第一招:ReSharper的是問有關刪除this這僅僅是一個風格的東西給我。沒有更多,保持它不會以任何方式損害性能。這只是一個可讀性問題。

對於第二和第三:ReSharper的正常使用喜歡的var而不是特定的數據類型,這就是爲什麼建議。我相信這是一個個人選擇的問題,除了可讀性以外,沒有其他收益。

0

第一個似乎不清楚。只要沒有歧義,通常不需要在this.的前面加上前綴,我從這個例子中無法看出。 Resharper可能是對的。另外兩個不會提高性能,編譯結果將是相同的。這只是一個品味的問題,當然還有你的編碼準則。

0

第一個應該是可配置的。據我記得,你可以告訴ReSharper你是否想擁有「這個」。只有領域,方法,兩者或沒有。

使用「var」不會改變生成的CIL代碼中的任何內容,因此性能將保持不變。我還沒有使用ReSharper一段時間,我不知道爲什麼它會如此激進地提倡匿名類型,但是「var」的一個優點是它更能抵抗改變。

意思是,如果不是調用Method.GetNumber(),而是調用一個包裝器,例如。在返回Nullable的同一行中過濾(Method.GetNumber()),您不必更新變量的類型。

1

我第一個想到的就是爲宗旨,如果你想「GetRuleViolations()」的靜態方法。然後你不必刪除「這個」標識符。

2

對於第三個 - 最讓我惱火的。它爲讀者提供了更少的信息,我認爲這只是一個展示新功能的問題。

我會說 - 用VAR當你知道的返回類型,並使用正確的對象類型,當你不喜歡這樣的:

var reader = new XmlReader(.... // Implicit 
XmlReader reader = SomeClass.GetReader() // Explicit when you can't be sure 
3

除了你的小方塊變綠的顯而易見的好處之外,如果你編寫的代碼將在稍後由其他人維護,那麼在編碼語法中不使用你的個人偏好是很有意義的。 Resharper以一種非常廣泛的受衆可識別的方式在格式化代碼方面變得非常有用。

我屬於思想流派,說無所謂誰是對的。如果我們都堅持一種模式,我們都會發現讀取其他代碼更容易。

所以,在我看來,不要更改默認的resharper設置。只要接受,如果你使用默認值,你可以讓每個人都變得簡單。

+1

我同意你使用工具默認值。不幸的是,從我看到的,我不喜歡Resharper的默認 – 2009-08-19 10:56:55

+1

因爲SECURITY,我總是將resharper的'var'設置更改爲顯式類型。可讀性很好,但是在重構後可能會造成嚴重損害。 – Offler 2013-07-29 12:00:18

0

這些都不會對性能有任何影響,只有關於可讀性。

我發現建議1和2比您的原始代碼更具可讀性和可讀性。

但是,如果您發現它們不易讀或違反貴公司的代碼風格標準,則不需要遵循這些建議。將光標放在波浪線上時,按Alt-Enter顯示Contex動作列表。其中之一將是改變檢查的嚴重性;你根本無法展示它或者將它顯示爲一個提示。您可以在找到完整的檢查列表。ReSharper |選項|代碼檢查|檢查嚴重性