說來慚愧,筆者使用Resharper也已經有一段時間了,
但仍然覺得對它很是陌生,
平常開發有用到的功能僅僅是冰山一角而已,
前幾天在重構(還債)的過程中,
剛好遇到自訂程式碼排版的需求,
依稀記得91哥在「極速開發」的課程中曾經示範過,
自番胡亂研究了一下才終於找到解法,
趁著記憶猶新時趕緊記錄下來,
以免下次失憶症發作。
Code Cleanup
Resharper是一套Visual Studio的商用擴充套件,
除可幫助重構程式碼外還有許多琳瑯滿目的功能,
其中一項功能為Code Cleanup
你可以在Menu -> Resharper -> Options -> Code Editing -> Code Cleanup找到它,
或按快捷鍵Alt+R+O後開啟。
這招可以協助我們依指定條件清整程式碼。
但這邊要注意一下,
Resharper在預設模板是不提供更改條件設定的,
若想要依個人喜好或團隊習慣調整,
可以點選Duplicate產生複本,
而本文介紹的主題恰巧是它的第一個條件選項 - Apply file layout
File Layout
相信許多人都有程式碼排版的習慣,
最讓人熟悉的排版莫過於Tab了!
但除此之外,
將類別內的成員依團隊習慣參考語言規範進行排序,
也是相當重要的一部分。
而在C#語言排版順序的討論上,
有興趣的讀者可以參考stackoverflow上的一篇討論文章。
在這個IDE當道的年代,
適時地使用工具能夠協助你省下更多時間,
畢竟時間就是金錢,
工程師的時間應該花在刀口上才是。
Resharper中的File Layout功能,
即可針對指定的C#程式碼類別進行排序,
你可以在Menu -> Resharper -> Options -> Code Editing -> C# -> File Layout找到它。
點進去後可以看到Default Pattern,
它會按照上到下的每個屬性順序進行排序,
點選上圖的左方箭頭可回到上一階層。
在預設的模板中提供了四種類型,
除了不可排序的類型外(Non-reorderable types),
接下來是xUnit及NUnit的測試框架,
最後才是Default Pattern,
這邊的上到下屬性一樣是具有排序依據的,
所以盡可能將具有識別特徵(如Attribute)的模板往前放,
最後再擺預設模板。
眼尖的讀者應該有發現預設的測試框架中並不支援MSTest,
那如何讓MSTest的類別也能自動排版呢?
這邊先小小的賣個關子,
小弟將於下次做更詳細的介紹。
結語
如果想了解更多Reshaper使用情境的朋友,
小弟很推91哥「極速開發」課程,
含金量跟實質效果保證讓你大吃一驚。
參考
https://www.jetbrains.com/help/resharper/File_and_Type_Layout.html
https://www.jetbrains.com/help/resharper/Code_Cleanup__Index.html