萬惡的360文檔
解除復制的限制
Ctrl + Shift + i 打開控制台,也可以鼠標右鍵,選最后一個檢查也可以打開控制台,輸入:
setInterval = null; //將內置無限循環函數設置為空 setTimeout = null; //將內置定時循環函數設置為空 $("*").unbind(); //將所有標簽的監聽事件解除綁定
執行后隨便復制;
更快捷的方式:F12=>F1,選中禁用js
=========== 內容較多,推薦文章就放在前面,方便平時查看 ============
ReSharper制作Template幫助我們快速輸入代碼
簡要說明:模版位置:Resharper =》 Tools =》Templates Explorer ,然后找到c#,就可以自己添加了
ReSharper導致Visual Studio緩慢?
============================= 正文開始 ===============================================
http://www.360doc.com/content/16/0411/19/7014874_549790915.shtml
Resharper是我一直非常喜歡的工具。響當當的名聲絕對不是吹牛皮吹出來的。如果你的公司在尋找一個提高開發人員效率的工具,那么首選應該是Resharper,這一筆投入是值得的。如果你想知道為什么,那么請看一看我的一系列上手指南。
Resharper進階一:簡要介紹
Resharper進階二:快速定位
Resharper進階三:快速完成
Resharper進階四:萬能的Alt+Enter
Resharper進階五:高效的代碼結構調整
Resharper進階六:重構才是王道(上)
Resharper進階七:重構才是王道(下)
Resharper進階八:增強的瀏覽功能
這一系列不是對每個功能的中文幫助,而是我對開發中可能涉及的功能需求,利用Resharper來完成。有些是Visual Studio有的,但是做的不好,有些是沒有而Resharper發明的。總的目的都只有一個,就是加快你編寫代碼的速度。畢竟,我們的終極目標是在5點 半前心滿意足的關上電腦回家。
誠然,學會一個新的語言,或者一個新的工具,都有一個上手的問題。希望我的文章能夠幫助你盡快地熟悉Resharper。在熟悉了它以后,你使用鼠 標或者是無效擊鍵的頻率會大大地降低。當然這也需要對visual studio本身的使用有一定的基礎,畢竟它Resharper是建立在這么強大的一個IDE基礎上的。
進階一:簡要介紹
面對這樣一個問題:為什么.net能夠比java更加快速的完成開發?恐怕最大的優勢在於Microsoft提供了一個無比強大的IDE。它的強大在於適 用於各個層次的開發人員。當你還是一只小小鳥的時候,可以學會drag&drop,當你開始寫代碼的時候,你會發現設計器生成的代碼是多么愚蠢和 臃腫。當你自己能夠寫出干凈的代碼時,可能再也不想切換到設計器中去了(切換/F7)。我相信我們中的大部分人,即使是最資深的Windows開發人員, 用VS寫代碼比用記事本的效率要高很多,因為我們畢竟需要IDE的幫助以提高我們的生產力。但是在那個沒有Resharper的年代里,你的生產力頂多停 留在兩個輪子的時代,另兩個輪子,只有在你熟悉了Resharper以后才能轉動起來。
Resharper能帶給你的效率提升如此之高,以至於在我訂閱的所有.net專家的blog里面,所有的人都在關注它。要知道他們都不是一般的 coder,大多數是CTO或者技術總監。當我三個月前開始使用Resharper時,想要搜到一些中文的介紹,或者是經驗性的文章卻十分困難。大多數人 似乎不關心它的存在。博客園里充斥着因為安裝Resharper而拖慢系統,導致VS不穩定,機器響應速度下降,VS啟動速度下降等等的論調。幸運的是, 這些在我這里都沒有遇到,也許是因為2G的內存的緣故,反正devenv.exe所占的200~300m內存並沒有使我感覺機器在變慢,而且我的VS幾乎 是一直運行中,沒有一會關閉一會打開的時候,所以我只需要忍受Resharper在加載時的半分鍾初始化一次就夠了。相比於它能帶給你的效率提升,這些問 題都是微不足道的(一家之言)。
如果你在VS環境下寫代碼時幾乎不用快捷鍵,那我覺得你沒有必要往下看了。因為Resharper是通過快捷鍵來提升你的效率的。但是相信我,如果你曾經在星際中一遍一遍被人虐的話,你應該能體會到快捷鍵帶來多么大的變化。
首先在安裝完Resharper之后,你主要通過三種方式用到或看到它:
一是在菜單欄上,如果是3.0版本的話,它會默認的屏蔽掉“重構”菜單欄,也就是說你按Alt+R的時候,彈出的是Resharper的下拉菜單而不是“重構”,為什么?因為你不再需要“重構”菜單了。如果是以前版本,比如2.0,似乎需要您手工的完成這一步,方法如下:
工具——自定義——重排命令,然后把“重構”菜單刪除,毫不猶豫地!
你可以簡單地這樣體驗一下:Alt+R,N,回車,就可以在當前項目中添加一個類,還記得以前你是怎么做的嗎?在解決方案資源管理器中選中一個項目,然后右鍵,在長長的彈出菜單中選擇:添加——類,如果你的電腦夠慢的話,在3秒鍾之后才會彈出一個對話框來問你文件名。
另一種方式是:看到豎直滾動條了嗎?在它的右邊多出一個邊框來,上方是一個“綠色/黃色/紅色”的方框,而邊框上會出現一道一道紅的橙的橫杠。什么 意思:當紅杠出現時,表明你的代碼在那個位置出現了錯誤,如果是橙杠,表明那是一個警告,多半是沒有檢測null值或者聲明后未使用之類。
如果當前文檔的所有錯誤和警告都得到了適當的處理,則不會再出現橫杠,而最頂上的方框也會變成綠色;
如果沒有錯誤但有警告,則是黃色,這時編譯可以通過;
如果那個方框是紅色,則表示有編譯通不過的錯誤,這時你應該通過點擊紅杠,去修改您的代碼。如果你即使編譯,也會報錯並無法生成。這樣做使你在寫代 碼時就能及時得發現你的錯誤,而不需要等到編譯時。這樣做也使你的效率得到了提高。因為編譯至少要耗去您半分鍾的時間,並且強烈的讀寫您的硬盤,特別在你 的硬盤轉速慢時,比如筆記本上,這一過程是那么的令人心痛。
第三種接觸到Resharper的自然是快捷鍵了。右鍵菜單當然也有很多的功能,但是那太弱智了,太慢了。我們需要的是專業,我們用的工具定位不是 打毛衣的大媽,而是開發的專業人員,如果你連快捷鍵都無法掌握,那真的得對你的開發技巧打一個大大的問號。試想一下這個場景,當你腦子里冒出這個念頭, 啊,這個類,應該提出接口來,要這個方法,這個,和這個,還有這兩個事件。啊,不行,我現在就得提,不然就忘了。我得新建一個接口,點哪個來着。啊,在哪 里新建……建好了,對了我要提取哪幾個方法來着。(我暈死)許多時候你的念頭都是一閃而過的,需要你的操作也相應的跟上。這個操作在Resharper就 是,把光標移動到類名上,然后點Ctrl+Shift+R,除了你想要的提取接口,其他的重構功能也一目了然。而且遠比VS自帶的要快。
至於右鍵,如果你剛開始實在記不住快捷鍵,只能使用它了,或者Alt+R,實際上它也要比右鍵菜單快一點點。
真正激動人心的是在隨着你逐漸熟悉Resharper以后,能夠帶來的諸多方便之處,我將會在接下來的一系列隨筆中講述。
進階二:快速定位
摘要
快速代碼定位的核心就是三個功能:
- 轉到定義:Ctrl+B;
- 查找所有使用:Alt+F7;
- 從這里瀏覽:Ctrl+Shift+G.
轉到定義
當你的光標在一個變量上時,按下Ctrl+B就會跳轉到這個變量聲明的地方。這可能是某一個字段,某一個方法的參數或者一個局部變量。
當你的光標在一個類型上時,按下Ctrl+B可能發生兩種情況,一是當這個類型的定義在你的項目中有源代碼時,會跳轉到這個源代碼文件。如果沒有源 代碼,則會打開一個對象瀏覽器。有一些使用者更期望跳轉到元數據文件,但是我更喜歡對象瀏覽器,這樣類型的公有屬性、方法、事件都被列出來了,可以一目了 然。就我的經驗,列表永遠比下拉框,選框更加易於查找。
但是這個功能有一個副作用,多年使用Windows的經驗告訴我們,按住Ctrl的時候點鼠標左鍵,默認的操作是選中一整個單詞,但是在安裝了 Resharper以后,這個操作實際上等於Ctrl+B,也就是說可能你想選擇這個變量的名字,然后復制到別處去,可是卻跳轉到了這個變量的聲明處,不 由得讓你一陣惱火。目前我還沒有找到選項屏蔽掉這個操作,所以,只有用鼠標雙擊來選擇單詞了(提示:如果跳轉到了別處,想返回,按Ctrl+-)
查找所有使用
Alt+F7,有感覺嗎?不錯,就是TotalCommand里搜索的快捷鍵,沒有用過TC,還在用資源管理器?那可不應該。簡而言之, Alt+F7將你光標所在位置的變量的所有使用以列表的方式顯示出來,顯示結果的窗體可以像其他窗體那樣停靠。
它的優點包括:
- 可以從所有使用中挑選只顯示read usage或者write usage,有時我們只是想知道某個變量在哪里被改變了。找到的位置前的圖標也告訴你這點。
- 可以在下方預覽,即使我們列出所有使用,也不想跳轉到每個使用它的地方,這時預覽可以幫你大忙。
- 當你在代碼編輯器中改動了某些使用時,比如刪除了某行,那么在查找結果的窗體中,會用刪除線表示出來。
- 默認的是尋找解決方案中所有的使用,並且按照命名空間來組織,非常便於選擇。
我現在已經記不起來在沒有Alt+F7之前我是怎么查找的。反正現在我幾乎不怎么樣Ctrl+F了,除非我忘記了某個變量的名字。如果是這樣,多半 這個名字需要refactor,那也是Resharper的另一大塊功能所在。也許有人對這個功能嗤之以鼻,但是用過CAB的人都知道,訂閱和發布某個事 件的簽名,完全是字符串,如果你不用搜索來找到它的話,你都不知道這個控件的鼠標點下去,到底有多少個處理程序在背后開始工作了。用了Alt+F7來搜索 這個字符串,等於在查找背后所有的調用者。
不過提示你,當光標停留在一個類型上時,要慎用Alt+F7,假設是一個string,你應該能想象到得找到多少個使用。
從這里瀏覽
實在不知道用什么中文來翻譯這個navigate from here...,只好直譯了。你可能在這些時候需要它:
當你要找這個類的所有繼承者,或者接口的所有實現者時,按住Ctrl+Shift+G會彈出一個菜單,其中有Inheritor,用方向鍵來選擇並 回車,如果只有一個實現,那么直接跳轉到這個實現,如果有多於一個,或者因為使用了partial分布到好幾個文件中,會再彈出一個菜單來供你選擇。與此 類似,如果你選擇base,則會跳轉到基類或接口中去。
同時這個功能也囊括了前面的轉到定義和查找使用,如果你偷懶的話,只記住這個就可以了,雖然Ctrl+Shift+G的快捷鍵有一點生僻,但是用着用着你就發現順手了。
這個功能不可不謂是用來熟悉一套框架的利器,可以讓你迅速找到某個接口的所有實現,和Alt+F7合用,可以讓你在一個龐大的解決方案中如魚得水。
下一次,我們該來講一講威力無比的Alt+回車了
進階三:快速完成
常常寫代碼的人,應該都對Visual Studio的智能感知有一定的好感,通過它,在輸入比較長的對象名稱時不覺得吃力了。恐怕這是.net平台比其他平台的代碼更加易讀的一個因素,因為每 個變量名稱都比較有意義,而不是晦澀的varIdx,pElemDisp之類了。盡管這樣看起來很酷。
在沒有Resharper之前,Visual Studio的自動完成功能就很強大了。只是它定義的快捷鍵實在是讓人不順手。Alt+右方向鍵,我怎么都無法不低頭按它倆。於是我把快捷鍵改成了Ctrl+;(分號)這樣按起來方便多了。
Resharper則在Visual Studio的基礎上又增添了一些功能。比如說,在原生的自動完成中,關鍵字,比如private,override這些,是沒有提供自動完成的(有嗎, 我已經不記得了)。還有這下面一些,則是Visual Studio原生確實沒有的:
當你寫一個新的字段時,比如string _field; Resharper會自動地在前面為你加上private,也許有的人覺得多余,但我覺得是應該的。
當你輸入foreach的時候,模板會自動的出現,方便你輸入集合還有子項的類型與名稱,回車之后就進入到塊中。這類的模板你可以自行定義,並在團隊中共享。這樣在處理某些特定的場景時,代碼的執行基本一致。
在你需要輸入{的時候,Resharper能夠自動的為你加上},並且光標位於其中,如果你敲回車鍵,兩個括號和你准備接下來要寫的塊內的代碼都縮進對齊了。這個功能遠遠不只說起來那么簡單,當你發現自己可以因此忘記每次括回去的時候,是多么的愜意。
同理,在你輸入[或者(的時候,Resharper也如此為你添加成對的括號。
這樣也有不方便的時候,比如你在調用某個方法的時候,其實你只是想輸入(,然后開始寫參數,再寫),然后寫分號,可是它偏偏幫你寫了,特別是當參數還是一 個字符串的時候,你輸入",它又自動的幫你寫了",並且把光標置於其間,好多時候搞得你很惱火。因為你要敲end鍵挪到行尾,再寫;,而end鍵也很難在 你不低頭的情況下按准。實際上,這時你的選擇還不如老老實實寫上"),也比敲end來的快。所以為方法自動的添加括號的功能,只有在不帶參數的情況下使用 才最愜意。
總的說,自動完成函數的輸入工作,還是一個很實用的功能,現在你需要輸入ToString()的話,只需要最多敲四個了ToS和;就可以了,其他的部分Resharper都自動為您完成。
最后再賣弄一下,將自動完成的快捷鍵換成Ctrl+;的話真的非常棒,即使你沒有安裝Resharper,也可能考慮把原生的快捷鍵更改掉。在我所有用的電腦上,我都偷偷的把Ctrl+;添加進去了。因為這兩個鍵實在是太好摁了。
進階四:萬能的Alt+Enter
萬能的Alt+Enter能夠幫你完成很多編寫代碼過程中的dirty work,總結起來大概是這么些:
- 幫你實現某個接口或抽象基類的方法;
- 提供你處理當前警告的一些建議;
- 為你提供處理當前錯誤的一些建議(不一定是真的錯誤);
- 為你簡化當前的臃腫代碼;
幫你實現某個接口或抽象基類的方法
這個功能Visual Studio也已經幫你提供了,就是每次你在類名的后面加上:ISomeInterface的時候,它會提示你按Tab鍵就生成接口中所有方法的存根。如 果你這時沒按,后來,你還可以把鼠標懸停在這個接口名,會出現一個小小的,小的不能再小的,費死勁才點得中的智能感知符上,然后生成方法。在安裝了 Resharper以后,這個功能被視為與其它警告一樣的處理辦法。如果你:ISomeInterface以后,又沒有實現它的方法,這一行代碼會打上波 浪號,表示有警告或者錯誤發生。按下Alt+Enter,則會為你生成這些方法。
不要覺得我小題大作,在你修改了ISomeInterface這個接口以后,比如添加了一個Initial方法,這時最快的辦法是:在 ISomeInterface上點Ctrl+Shift+G瀏覽到這個接口的實現類,然后Alt+Enter,這個類中立即就添加了Initial這個方 法,並可開始編寫代碼。
提供你處理當前警告的一些建議
有的時候你可能會忽略的一些細節,Resharper不會忽略,比如你用了隱式類型轉化:
而沒有接下來檢測它是否為空,就直接使用。這時Resharper會提示你一個警告。如果你按下Alt+Enter,它會把你之后的代碼包括在一個if語句中:
{
//你接下來的代碼
}
不過令我不滿意的是,我時常要的是這樣的效果:
return;
不知道這個行為能不能在配置中修改。
為你提供處理當前錯誤的一些建議
被Resharper標記為紅色的即為錯誤了,有時錯誤也可能是你有意為之。比如你隨意地在View.cs中寫下了:
而實際上你的Presenter.cs中還沒有這個方法,那么按下Alt+Enter就會立即在Presenter.cs中添加這個方法,並跳轉到 該方法,如果Presenter不止分布在一個文件中,會彈出對話框讓你選擇。相比於Visual Studio經常臃腫的對話框,Resharper的彈出對話框往往十分直接,你只需立即用方向鍵選你需要的並回車。
為你簡化當前的臃腫代碼
你的代碼如果被Resharper視為多余的,那么會以灰色標識出來,例如:
btnOK.Click += new EventHandler(btnOK_Click) //new EventHandler為灰色
多余的代碼並無害,只是顯得不那么簡潔,如果你頭一次在安裝了Reshaper之后打開你之前編寫過的代碼會發現大量的灰色代碼。如果你查看設計器 生成的代碼,會發現Reshaper的豎直條幾乎變成了橙色的一條了。基本上,你都可以用Reshaper為你自己的代碼瘦瘦身,設計器產生的,比如窗 體,或者Dataset還是不要動的好。
進階五:高效的代碼結構調整
通過我之前介紹過的Alt+F7和Ctrl+B,你可以很快的在一個代碼文件中知道函數的調用情況。但是有的時候,代碼文件非常復雜,里頭有幾十個 函數都算是小兒科,甚至一個構造函數就有N多個重載。這時你想清楚的了解文件中各個函數,屬性,字段,事件等等,就不是那么輕而易舉的事情了。
在Visual Studio中,你可以通過這些方式組織或審視你的代碼:
用region,這是最常使用的,我最喜歡的分法是:Field, Property, Event, EventHander, 然后根據實際情況,Constructors(如果構造函數重載多的話),Helper(如果有許多公用的流程的話),再就是跟某個特定任務想關聯的一系 列方法組成一類。
當你用region把你的代碼組織好了以后,確實顯得很簡潔。但是問題來了,當一個同事check了你的代碼,然后准備修改,這時,他想要理清你的思路, 於是在你的代碼里開始奮戰,啊,這個調用了那個,噢,這個地方可以接受0個或者1個或者三個參數……過了一個小時,他總算可以開始寫他要改的那個部分了。 region的缺陷就是讓寫的人很明白,而讀的人還是很費勁。
用對象瀏覽器可以把你的方法結構展現出來,但致命的是它是按照字母排序的,對於我們中國人來說,實在是難以找到像 FilterSelectableLayerByName這樣一個其實自說明性很強的方法來。而實際上你又把它裝進了一個“圖層控制”的region里 面,而你的讀者卻無法參透你的用意來。(如果你常常下載codeproject上的代碼的話,會知道這種事情常有。)
說了這么多,其實就是想把對象瀏覽器和region的長處結合起來,既可以清晰的分類,又能一目了然的找到需要的方法。Resharper這時幫上你的大忙了。用Ctrl+F12,就彈出一個像右邊這樣的窗口來。
這里面,按照你的region來顯示,這樣讀你的代碼的人也受益了。每個方法的參數,返回值都如UML一樣列出來。
- 如果需要瀏覽到某個方法,直接雙擊它的名字;
- 如果要把某幾個方法裝進一個新的region,則可以選中方法,點工具欄上的像框的那個圖標;點叉則會刪除這個region並把相應的方法移到外面來。
- 如果要調整某個方法的位置,比如把它移到別的region里面去,只需要在這里拖動這個方法即可。
- 更可喜的是,你想要的從這里瀏覽、找到所有使用和重構的功能也在這里提供了,在某個方法上右鍵你就能開始操作。
這絕對是Resharper里面最酷的功能,你快打開Visual Studio試一試吧。
進階六:重構才是王道(上)
重構是一種精神,證明你在致力於提供高效的、精煉的、健壯的代碼,而不是凌亂的、晦澀的、漏洞百出的代碼。
在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:就是把:
point.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自動就給你定位了。
不管怎么說,它帶給我更快更方便的開發體驗,把我從一些瑣碎的,不人性化的功能中解放出來。從這一點上來說,我很希望越來越多的人喜歡上它,開始用它,並幫助它更好的發展。