前言

「使用StyleCop驗證命名規則」這篇文章,指引開發人員透過StyleCop這個工具,來自動檢驗專案中產出的程式碼是否合乎命名規則。

但是在專案開發的過程中,如果只是驗證命名規則、而沒有統一程式排版,專案中很容易就會出現類似下列範例的程式碼產出。這樣的產出,雖然能夠正常地提供專案功能、並且符合微軟的命名規則,但是因為程式排版凌亂的問題,大幅降低了這份程式碼的可維護性。

  • Bad Code

    public class Class1
    {
    private string _name = "Clark"; public string GetResult()
    {
    return (_count01 + _count02).ToString();
    } private int _count01 = 1; private int _count03 = 3; public string GetName()
    {
    return _name;
    } private int _count02 = 2;
    }

本篇文章介紹如何透過CodeMaid這個工具,來自動整理專案中程式碼的排版,在不增加開發人員負擔的前提下,讓團隊的程式碼產出趨於一致、大幅提高程式碼的生產品質。主要為自己留個紀錄,也希望能幫助到有需要的開發人員。

  • Good Code

    public class Class1
    {
    private int _count01 = 1;
    private int _count02 = 2;
    private int _count03 = 3;
    private string _name = "Clark"; public string GetName()
    {
    return _name;
    } public string GetResult()
    {
    return (_count01 + _count02).ToString();
    }
    }

安裝

  1. 首先至微軟的官方網站,下載CodeMaid安裝檔:「CodeMaid_v0.7.4.vsix」。

  2. 執行CodeMaid安裝檔:「CodeMaid_v0.7.4.vsix」,來安裝CodeMaid。

執行

  1. 使用Visual Studio開啟專案。

  2. Visual Studio上方工具列中,開啟CODEMAID選單、點選Configuration來開啟CodeMaid設定畫面。

  3. CodeMaid設定畫面中,進入Reorganizing->General設定頁面,勾選「Run organize at start cleanup」後,點擊Save按鈕完成設定。

  4. 後續就可以從Visual Studio上方工具列中,開啟CODEMAID選單、點選「Cleanup all Code」來自動排版專案內的所有程式碼。

  5. 自動排版功能執行結束之後,開啟專案內的程式碼,會發現程式碼內容已經排列整齊,大幅提高程式碼的可維護性。

延伸

CodeMaid所提供的程式碼自動排版功能,用起來很方便、排版結果也很簡潔。但是在一些細節上,總是會有些許的排版定義,不符合團隊成員對於程式碼品質的要求。不過還好的是,CodeMaid開放了許多排版條件的設定項目,讓開發人員可以調整排版條件,來讓排版結果趨近於團隊成員對程式碼產出的要求。

1. Automatically run cleanup on file save

「Automatically run cleanup on file save」:位於Cleaning->General設定頁面。當該選項設定為勾選時,會在檔案存檔的同時,自動執行程式碼排版功能。

2. Run remove unused using statements

「Run remove unused using statements」:位於Cleaning->Visual Studio設定頁面。當該選項設定為勾選時,會在執行程式碼排版功能時,移除沒有使用的using定義。(開發階段建議不要勾選該選項,因為移除未使用的using定義,會造成使用LINQ時找不到擴充方法的問題。)

3. Remove multple consecutive blank lines

「Remove multple consecutive blank lines」:位於Cleaning->Remove設定頁面。當該選項設定為勾選時,會在執行程式碼排版功能時,移除連續多行的空白行。

4. Update #endregion tag with region name

「Update #endregion tag with region name」:位於Cleaning->Updae設定頁面。當該選項設定為勾選時,會在執行程式碼排版功能時,為#endregion區域標籤加上區域名稱。

5. Alphabetize members of the same group

「Alphabetize members of the same group」:位於Reorganizing->General設定頁面。當該選項設定為勾選時,會在執行程式碼排版功能時,依照成員類型排序之後,增加依照字母順序排序的工作項目。

參考資料

[Tool] 使用CodeMaid自動程式排版 - 摘自网络的更多相关文章

  1. [Tool] 使用CodeMaid自动程序排版

    [Tool] 使用CodeMaid自动程序排版 前言 「使用StyleCop验证命名规则」这篇文章,指引开发人员透过StyleCop这个工具,来自动检验项目中产出的程序代码是否合乎命名规则. [Too ...

  2. Android:控件WebView显示网页 -摘自网络

    WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用. webview有两个方法:setWebChromeClient 和 setWebClient setWebClient:主要 ...

  3. C# 中的内存管理,摘自网络

    C#编程的一个优点是程序员不需要关心具体的内存管理,尤其是垃圾收集器会处理所有的内存清理工作.虽然不必手工管理内存,但如果要编写高质量的代码,还是要理解后台发生的事情,理解C#的内存管理.本文主要介绍 ...

  4. Ubuntu的常用快捷键(摘自网络)

    篇一 : Ubuntu的复制粘贴操作及常用快捷键(摘自网络) Ubuntu的复制粘贴操作 1.最为简单,最为常用的应该是鼠标右键操作了,可以选中文件,字符等,右键鼠标,复制,到目的地右键鼠标,粘贴就结 ...

  5. SQL Server Data Tool 嘹解(了解)一下 SSDT -摘自网络

    Visual Studio 2010 的伺服器管理員可以用來連接 Sharepoint.伺服器,還可以透過資料連接連結至 SQL Server  等資料來源.以資料來源為例,您可以利用單一工具(Vis ...

  6. Scott Hanselman's 2014 Ultimate Developer and Power Users Tool List for Windows -摘自网络

    Everyone collects utilities, and most folks have a list of a few that they feel are indispensable.  ...

  7. 利用XSD配合XSLT產出特定格式Word檔案 -摘自网络

    利用類別產生XSD檔 產出XSD檔的目的在於提供Word樣板設計之資料框架 在此使用微軟提供之XML Schema Definition Tool (Xsd.exe)工具產生XSD檔 1. 定義類別 ...

  8. 使用 NodeJS + Express 從 GET/POST Request 取值 -摘自网络

    過去無論哪一種網站應用程式的開發語言,初學者教學中第一次會提到的起手式,八九不離十就是 GET/POST Request 的取值.但是,在 Node.js + Express 的世界中,彷彿人人是高手 ...

  9. 理解OAuth 2.0 -摘自网络

    OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版.                                      本文对OA ...

随机推荐

  1. MFC的dll中控制资源问题

    有程序EXE和DLL,其中DLL中有1个函数用来显示对话框,被EXE调用.当EXE和DLL都为Release或Debug时,没有任何问题,但EXE为Release.DLL为Debug时,就会出错.该D ...

  2. [topcoder]BadNeighbors

    http://community.topcoder.com/stat?c=problem_statement&pm=2402&rd=5009 动态规划题.对于圈状的题目有了点感觉. 题 ...

  3. Android:activity跳转过渡效果

    放在startActivity(intent);后面 overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out) ...

  4. ConfigurationManager配置操作

    /// <summary> /// 配置信息维护 /// </summary> public class AppConfig { public static Configura ...

  5. border-radius的水平和竖直半径

    通常我们设置border-radius都只区分四个角的, 如border-radius: 1em 2em. 其实每个角的border-radius都由两部分组成, 水平半径和竖直半径. 要设置水平和竖 ...

  6. CHtmlView类的中文介绍

    http://zhidao.baidu.com/link?url=h8FaKA6FMNXzYJu_XO-_buBxuGdM0jozKUSVv6pgEPsvhTB2-xLltH-jVLDDJKMBAkn ...

  7. Ubuntu 12.04上编译Vim7.4的时候遇到“no terminal library found”问题

    错误如下: no terminal library foundchecking for tgetent()... configure: error: NOT FOUND!      You need ...

  8. Linux Shell常用命令手册(Updating)

    检查远程端口是否对bash开放: nc -nvv $IP $PORT telnet $IP $PORT 当前任务的前后台切换: Ctrl + z fg 截取变量前5个字符: ${variable:0: ...

  9. 彻底搞清js中闭包(Closure)的概念

    js中闭包这个概念对于初学js的同学来说, 会比较陌生, 有些难以理解, 理解起来非常模糊. 今天就和大家一起来探讨一下这个玩意. 相信大家在看完后, 心中的迷惑会迎然而解. 闭包概念: 闭包就是有权 ...

  10. bzoj1471

    转化补集的思想,首先求出任意两点之间路径数目 然后求两条路径第一次相交在点k(按照拓扑排序的顺序)的数目,显然这里要用到容斥 然后pascal有坑爹的范围检测,所以运算中有些不会影响到答案但会爆int ...