天天看點

ReSharper 配置及用法

1:安裝後,Resharper會用他自己的英文智能提示,替換掉 vs2010的智能提示,是以我們要換回到vs2010的智能提示

ReSharper 配置及用法

2:快捷鍵。是使用vs2010的快捷鍵還是使用 Resharper的快捷鍵呢?我是使用re的快捷鍵

ReSharper 配置及用法

3:

esharper安裝後,會做幾件事情,這幾件事情對于除此使用者,比較麻煩,是以歸納總結一下,以資參考。

(1)、會将選項——文本編輯器——C#——正常——自動列出成員 這個選擇框的勾選去掉。這樣當你使用某個方法的時候,便不會提示參數,是一個很郁悶的事情。

可以手動勾上。

(2)、會将選項——文本編輯器——C#——進階——顯示實時語義錯誤、在編輯中用下劃線辨別錯誤這兩個選項去掉。這個本來沒有什麼,但是如果解除安裝了Resharper,

vs編輯器變不會實時提示錯誤。是以解除安裝Resharper後,需要把這兩個選項重新勾選上。

4: use  var

use implicitly typed local variable declaration

ReSharper 配置及用法

5:按 alt+enter 能解決很多問題。下面是快捷鍵大全。

ReSharper 配置及用法

6:   Alt+F7将你光标所在位置的變量的所有使用以清單的方式顯示出來,顯示結果的窗體可以像其他窗體那樣停靠。

它的優點包括:

可以從所有使用中挑選隻顯示read usage或者write usage,有時我們隻是想知道某個變量在哪裡被改變了。找到的位置前的圖示也告訴你這點。

可以在下方預覽,即使我們列出所有使用,也不想跳轉到每個使用它的地方,這時預覽可以幫你大忙。

當你在代碼編輯器中改動了某些使用時,比如删除了某行,那麼在查找結果的窗體中,會用删除線表示出來。

預設的是尋找解決方案中所有的使用,并且按照命名空間來組織,非常便于選擇。

我現在已經記不起來在沒有Alt+F7之前我是怎麼查找的。反正現在我幾乎不怎麼樣Ctrl+F了,除非我忘記了某個變量的名字。如果是這樣,多半 這個名字需要refactor,那也是Resharper的另一大塊功能所在。也許有人對這個功能嗤之以鼻,但是用過CAB的人都知道,訂閱和釋出某個事 件的簽名,完全是字元串,如果你不用搜尋來找到它的話,你都不知道這個控件的滑鼠點下去,到底有多少個處理程式在背後開始工作了。用了Alt+F7來搜尋 這個字元串,等于在查找背後所有的調用者。

不過提示你,當光标停留在一個類型上時,要慎用Alt+F7,假設是一個string,你應該能想象到得找到多少個使用

7:威力無比的Alt+Enter回車

萬能的Alt+Enter能夠幫你完成很多編寫代碼過程中的dirty work,總結起來大概是這麼些:

幫你實作某個接口或抽象基類的方法;

提供你處理目前警告的一些建議;

為你提供處理目前錯誤的一些建議(不一定是真的錯誤);

為你簡化目前的臃腫代碼;

8:  Ctrl + F11   當我們看别人的代碼,或者是看自己的代碼的時候,總是覺得代碼太多,于是我們就用 region來把代碼進行了封裝注釋,可是這樣之後别人看代碼就很郁悶,Resharper的  File Structure 功能,就可以把region和你的方法都展示出來。

說了這麼多,其實就是把對象浏覽器和region的長處結合起來,既可以清晰的分類,又能一目了然的找到需要的方法。Resharper這時幫上你的大忙了。用Ctrl+F11,就彈出一個像右邊這樣的視窗來。

這裡面,按照你的region來顯示,這樣讀你的代碼的人也受益了。每個方法的參數,傳回值都如UML一樣列出來。

如果需要浏覽到某個方法,直接輕按兩下它的名字;

如果要把某幾個方法裝進一個新的region,則可以選中方法,點工具欄上的像框的那個圖示;點叉則會删除這個region并把相應的方法移到外面來。

如果要調整某個方法的位置,比如把它移到别的region裡面去,隻需要在這裡拖動這個方法即可。

更可喜的是,你想要的從這裡浏覽、找到所有使用和重構的功能也在這裡提供了,在某個方法上右鍵你就能開始操作。

ReSharper 配置及用法

重構是一種精神,證明你在緻力于提供高效的、精煉的、健壯的代碼,而不是淩亂的、晦澀的、漏洞百出的代碼。 

在Visual Studio

2005中,微軟第一次提供了重構工具。但是不夠,遠遠不夠。我們需要的重構是非常廣義的,我們想要對代碼進行快速的調整,快到我在想什麼我的工具就能做

什麼。這才是追求重構的境界。是以在這個意義上,幾乎Resharper為你提供了巨大的生産力。 

Visual Studio 2005提供的重構包括了如下:

封裝字段

提取方法

提取接口

提升局部變量

移除參數

重命名

重新排列參數

這些方法在Resharper中全部都支援(但Resharper的重構遠不止這些),它們對應的變成了:

封裝字段 —— Introduce Field

提取方法 —— Extract Method

提取接口 —— Extract Interface (另增加了Extract Superclass提取為基類)

提升局部變量 —— Introduce Variable

移除參數 —— 移到Change Signature(改變方法簽名)中

重命名 —— Rename (Resharper會根據對象的類型名稱,提供你幾個可選的最合适的名稱)

重新排列參數 —— 移到Change Signature(改變方法簽名)中

我知道很多人都聲稱自己E文不好,但是,這确實都是很簡單的單詞,難不倒任何人的。這些重構的功能是人所共知的,下面就告訴大家一些Resharper特有的,首先,重構的快捷鍵是Ctrl+Shift+R:  1、對于類,除了提取接口、基類,你還可以移動它到其他的命名空間和移動到别的檔案裡,這是一個實用的功能,也許你不信,但是我這真的有個人,把所有的business entity都寫在一個DataObject.cs裡面。你難以想象,我打開它時嘴張了多大。  2、對于字段,提供了: Safe Delete,會檢測所有使用到的地方,并詢問如何删除; Pull Member Up和Push Member Down,可以把這個字段在基類和繼承類中移動; Use base type where possible,盡可能的使用基類,由于ArcGIS平台是基于com元件的,很多時候我們需要的是IGeometry, IPointCollection這樣的接口所公開的屬性或者方法,于是你沒有必要儲存一個polygon對象,而可以使用基類型; Encapsulate Field,封裝字段,但是這個功能遠沒有另一個提供同樣功能的操作有用。我可以在後文中來講。 3、對于方法,提供了: 與字段類似的功能,此外; Change Signature,更改函數簽名,包括更改名稱,傳回值類型,參數的各種資訊,添加和删除參數,相當實用。如果你是在重寫方法上操作,會提示你是否到基類中更改。 Make Static,如果Resharper檢測到這個方法并沒有與非靜态成員相關聯的話,往往會自動地提示你(以黃色橫杠的形式出現)可以改為static,如果你自作主張的對一些方法進行修改也無不妥,但後果自負。 Extract class from parameter,如果你的參數有七個八個,那是否考慮用一個類來封裝這些參數呢,于是這個功能應運而生。 Method to Property,顧名思義,如果還在使用GetField()或者SetField(..)的話,你一定是從非.net星來的。 4、在方法體内部:  Extract Method,不用介紹了吧。  Introduce Variable/Parameter/Field,取決于你光标所在的對象,可以提供轉化的功能。  Inline Variable:就是把: IPoint point = new PointClass();  point.PutCoords(_point.X, _point.Y); 變成這樣子: new PointClass().PutCoords(_point.X, _point.Y); //這是個糟糕的例子 5、重命名:  為什麼重命名值得挑出來講,因為Resharper提供了命名建議這一金子般的功能。于是,想改名為易讀性強的名字,不是那 麼費腦子的事情了。Resharper會根據這個變量的類型,為你提供幾個備選名字,名字清單是列在光标位置上的(對方法重命名會彈出對話框),你隻需要 用方向鍵選擇并敲回車即可,這種名字多是将類型的名字首字母改為小寫得來的,甚至刨根到基類的類型名,你還可以在此基礎上加以改進。如果你還在用i,j這 種晦澀的名稱,請迅速的把他們改為outIndex, pointCount之類可讀的名稱。  Resharper其實提供了更先進的功能,在你命名一個變量時,就有快捷鍵為你提供備選名字,但是Ctrl+Space是我們寶貴的輸入法切換鍵,于是,我對變量名的敲定,往往是先起了一個較爛的,然後重命名的。  還有一些更廣義上的,幫助你對代碼進行調整的功能,我另寫一篇吧,不然太長了。

<a href="http://www.cnblogs.com/renji/archive/2007/12/09/resharper_refactor2.html">重構才是王道(下)</a>

插入代碼 

Resharper的

Alt+Insert快捷鍵提供給你插入代碼的功能。由于這兩個鍵非常難按(這是我的感受),真正在使用的時候,我用的是Alt-R-C-G,意指打開

Resharper菜單——Code——Generate,都隻需要你的左手,這樣你可以右手一邊比劃,一邊還在寫代碼,多酷啊。

生成的代碼中最常用的是構造函數和屬性,當你沒有私有字段的時候,隻會生成一個空的預設構造函數,而且沒有生成屬性的功能。在你有私有字段的情況下,生成之前會讓你選擇哪些私有字段需要作為構造函數的參數,并生成初始化的代碼,這樣編寫重載極其友善。生成屬性也類似。

再次常用的就是重寫基類或者接口的方法了。選擇Implement Interface Member或者Override Inheritate Member,Resharper會查找目前類的基類或接口,然後按繼承層次列出來,根據你的選擇重寫或實作這些方法。

不是太常用的是生成Equals和GetHashCode方法,在我的應用場景中很少重寫它們。但是根據《.NET設計規範》,不管是值類型還是

引用類型的Equals都建議重寫,并且應該重寫GetHaseCode方法,因為它們互相依賴。如果你有這個需求,那麼生成這三個函數一定能夠幫你的大

忙。

包圍代碼  Visual Studio也提供了外側代碼這個功能,你可以按Ctrl+K,Ctrl+S來激活這個功能,雖然我并沒有任何鄙視Visual Studio的意思,但是Resharper的快捷鍵确實更加合理(我在按下Ctrl的時候真的很難按下S),條目也更加清晰。Resharper中這個 功能的快捷鍵是Ctrl+Alt+J,然後你就可以選擇将目前行的代碼包圍到try-catch塊或者using中了。這是很高效的方法,我們傾向于在開 發的早期盡量不捕獲異常,而在中後期才加入異常處理機制。于是你某一個時期有大量的工作是把他們擴到try-catch塊中。而你要使用支援 dispose對象時,最好的方法是使用using塊。(賣蛋糕的,當我知道我的代碼不是最優的時候,我總是寝食難安),這裡自然也有把代碼擴到 region塊中的功能,也是常用功能之一。  調整方法的位置  前 面我曾說過,如果要調整方法的位置,可以在代碼結構視窗中拖放操作。如果你覺得隻是把一個方法移動到前面去,卻不得不打開代碼結構視窗太過重量級,那麼有 輕量級的方法:當光标位于方法的名稱上時,用Ctrl+Shift+上下鍵就可以移動方法的位置,包括方法的xml注釋,但如果你用的不是三個/的xml 注釋而是兩個/的,那麼就對不起了。  其他瑣碎的功能  你肯定常常會複制粘貼目前行的代碼,例如在使用StringBuilder.Append的時候,Ctrl+D可以簡化你Ctrl+C,Ctrl+V的工作。  曾經有一個組合鍵可以注釋掉目前行,還有另一個是取消注釋,但是我已經淡忘了,因為Ctrl+/才應該是真正屬于它的快捷鍵,再次按下就可以取消注釋。  關于Resharper的重構功能就是這些,我可能天真地把很多額外功能都算在重構裡了,但是它确實能夠幫助你快速的對代碼進行調整和優化。是以,請不要深究我對重構的概念認識是不是混亂。

增強的浏覽功能

浏覽參數的方式 

輸入方法的時候,

我們已經習慣了由IDE提供給我們的參數提示,極大了友善了我們選擇重載方法。在沒有Resharper的環境下,Visual

Studio已經做到了。那麼為什麼Resharper還要增強這個功能并大獲好評的。試問,Visual

Studio那窄窄的一行參數提示有沒有讓你覺得憋屈。我們有19寸的大螢幕,1600的分辨率,卻不得不盯着那窄條條,小心翼翼的按着上下鍵尋找我們需

要的重載。至少,開發Resharper的家夥是受不了這種憋屈的,于是大開大阖版的參數清單出現了,長長的參數重載被以清單的形式展現出來,當你在使用

GDT+方法,看到巨大的參數重載時,你會從心底裡發出感歎:賣蛋糕的。 

同時,Resharper展示參數的快捷鍵變成了Ctrl+P,如果你覺得屏蔽了列印的快捷鍵簡直是在開玩笑的話,那麼問問你自己有多少次列印過自己的代碼。 

浏覽打開過的文檔 

我竊以為你已經知道了在Visual Studio中切換文檔的方式,它們包括: 

Ctrl+Alt+上下方向鍵,可以在打開的文檔中切換; 

Ctrl+Tab,不僅可以在文檔之前切換,并可以切換到解決方案檔案夾,屬性視圖去,需要按左右鍵。 

是怎麼樣打開最近編輯後關閉的檔案呢,Visual

Studio很客氣的又沒有提供此功能,于是留給了Resharper。在我這裡這個快捷鍵是Ctrl+E,Ctrl+E,沒錯,按兩次。如果你的不是,

那麼在Resharper-View-Recent

Files菜單下看看它是什麼。因為你會時常用到。打開一個檔案的清單,用方向鍵選擇并回車就會在編輯器中打開。 

很多人說Resharper的性能問題,我想,一個可能的原因是打開的文檔太多了,如果你有時刻關閉不需要的文檔的習慣,性能或許不會那麼差,并且你可以随時打開這些你關閉了的文檔,就像在已經打開的文檔中切換一樣的友善。 

我的團隊中沒有用到靈活開發那些進階的東西,但是我們還是保持着每次改動都僅涉及兩三個檔案的好習慣,并且頻繁的commite到源代碼伺服器上去。是以,我每次真正要編輯的檔案不多,性能不是問題。 

大家分享了很多Resharper使用的技巧,點點滴滴都已經融入我日常的開發工作中了。當然很不全面,例如與Nunit的內建,由于我們不是測試驅動,

是以沒有任何體驗,自然也不敢大放厥詞;也很主觀,我覺得它好,你可能覺得它不好,蘿蔔青菜各有所愛。再說,它也不是沒有白癡的地方,在文檔上點右鍵增加

的一個Close

All功能,可以關閉所有打開的文檔,關閉了幹什麼,對着一個空白的螢幕發呆麼?我覺得原生的“除此之外全部關閉”就夠了。還有一個定位的功能

(Locate in Solution

Explorer),真是沒用,如果你在VS選項中設定了,在解決方案管理器中跟蹤活動項,那麼VS自動就給你定位了。 

不管怎麼說,它帶給我更快更友善的開發體驗,把我從一些瑣碎的,不人性化的功能中解放出來。從這一點上來說,我很希望越來越多的人喜歡上它,開始用它,并幫助它更好的發展。

繼續閱讀