ReSharper 配置及用法1

http://www.jetbrains.com.cn/index.html 官方網站中文html

 

1:安裝後,Resharper會用他本身的英文智能提示,替換掉 vs2010的智能提示,因此咱們要換回到vs2010的智能提示瀏覽器

3](1[KECO85FI{JZ@TE$NKE

2:快捷鍵。是使用vs2010的快捷鍵仍是使用 Resharper的快捷鍵呢?我是使用re的快捷鍵服務器

_]BA}4Y457W2E0T%{A73PK5

3:編輯器

Resharper安裝後,會作幾件事情,這幾件事情對於除此使用者,比較麻煩,所以概括總結一下,以資參考。ide

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

能夠手動勾上。工具

(2)、會將選項——文本編輯器——C#——高級——顯示實時語義錯誤、在編輯中用下劃線標識錯誤這兩個選項去掉。這個原本沒有什麼,可是若是卸載了Resharper,性能

vs編輯器變不會實時提示錯誤。所以卸載Resharper後,須要把這兩個選項從新勾選上。測試

4: use  var優化

use implicitly typed local variable declaration

image

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

 

 

 

 

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裏面去,只須要在這裏拖動這個方法便可。
  • 更可喜的是,你想要的從這裏瀏覽、找到全部使用和重構的功能也在這裏提供了,在某個方法上右鍵你就能開始操做。

image

 

9:重構纔是王道(上)

重構是一種精神,證實你在致力於提供高效的、精煉的、健壯的代碼,而不是凌亂的、晦澀的、漏洞百出的代碼。 
在Visual Studio 2005中,微軟第一次提供了重構工具。可是不夠,遠遠不夠。咱們須要的重構是很是廣義的,咱們想要對代碼進行快速的調整,快到我在想什麼個人工具就能作什麼。這纔是追求重構的境界。因此在這個意義上,幾乎Resharper爲你提供了巨大的生產力。 
Visual Studio 2005提供的重構包括了以下:

  1. 封裝字段
  2. 提取方法
  3. 提取接口
  4. 提高局部變量
  5. 移除參數
  6. 重命名
  7. 從新排列參數

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

  1. 封裝字段 —— Introduce Field
  2. 提取方法 —— Extract Method
  3. 提取接口 —— Extract Interface (另增長了Extract Superclass提取爲基類)
  4. 提高局部變量 —— Introduce Variable
  5. 移除參數 —— 移到Change Signature(改變方法簽名)中
  6. 重命名 —— Rename (Resharper會根據對象的類型名稱,提供你幾個可選的最合適的名稱)
  7. 從新排列參數 —— 移到Change Signature(改變方法簽名)中

我知道不少人都聲稱本身E文很差,可是,這確實都是很簡單的單詞,難不倒任何人的。這些重構的功能是人所共知的,下面就告訴你們一些Resharper特有的,首先,重構的快捷鍵是Ctrl+Shift+R: 
一、對於類,除了提取接口、基類,你還能夠移動它到其餘的命名空間和移動到別的文件裏,這是一個實用的功能,也許你不信,可是我這真的有我的,把全部的business entity都寫在一個DataObject.cs裏面。你不可思議,我打開它時嘴張了多大。 
二、對於字段,提供了:

  • Safe Delete,會檢測全部使用到的地方,並詢問如何刪除;
  • Pull Member Up和Push Member Down,能夠把這個字段在基類和繼承類中移動;
  • Use base type where possible,儘量的使用基類,因爲ArcGIS平臺是基於com組件的,不少時候咱們須要的是IGeometry, IPointCollection這樣的接口所公開的屬性或者方法,因而你沒有必要保存一個polygon對象,而可使用基類型;
  • Encapsulate Field,封裝字段,可是這個功能遠沒有另外一個提供一樣功能的操做有用。我能夠在後文中來說。

三、對於方法,提供了:

  • 與字段相似的功能,此外;
  • Change Signature,更改函數簽名,包括更更名稱,返回值類型,參數的各類信息,添加和刪除參數,至關實用。若是你是在重寫方法上操做,會提示你是否到基類中更改。
  • Make Static,若是Resharper檢測到這個方法並無與非靜態成員相關聯的話,每每會自動地提示你(以黃色橫槓的形式出現)能夠改成static,若是你自做主張的對一些方法進行修改也無不妥,但後果自負。
  • Extract class from parameter,若是你的參數有七個八個,那是否考慮用一個類來封裝這些參數呢,因而這個功能應運而生。
  • Method to Property,顧名思義,若是還在使用GetField()或者SetField(..)的話,你必定是從非.net星來的。

四、在方法體內部: 
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是咱們寶貴的輸入法切換鍵,因而,我對變量名的敲定,每每是先起了一個較爛的,而後重命名的。 
還有一些更廣義上的,幫助你對代碼進行調整的功能,我另寫一篇吧,否則太長了。

 

重構纔是王道(下)

插入代碼 
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自動就給你定位了。  無論怎麼說,它帶給我更快更方便的開發體驗,把我從一些瑣碎的,不人性化的功能中解放出來。從這一點上來講,我很但願愈來愈多的人喜歡上它,開始用它,並幫助它更好的發展。

相關文章
相關標籤/搜索