Vim整合AStyle進行代碼美化

來源:互聯網
上載者:User

1、AStyle格式化代碼

安裝AStyle,並把bin目錄加入環境變數中 在vimrc中加入以下設定代碼

"調用AStyle程式,進行代碼美化func CodeFormat()          "取得當前游標所在行號          let lineNum = line(".")          "C來源程式          if &filetype == 'c'                    "執行調用外部程式的命令                    exec "%! astyle -A3Lfpjk3NS\<CR>"          "H標頭檔(檔案類型識別為cpp),CPP來源程式          elseif &filetype == 'cpp'                    "執行調用外部程式的命令                    exec "%! astyle -A3Lfpjk3NS\<CR>"          "JAVA來源程式          elseif &filetype == 'java'                    "執行調用外部程式的命令                    exec "%! astyle -A2Lfpjk3NS\<CR>"          else                     "提示資訊                    echo "不支援".&filetype."檔案類型。"          endif          "返回先前游標所在行          exec lineNumendfunc"映射代碼美化函數到Shift+f快速鍵map <S-F> <Esc>:call CodeFormat()<CR>
2 SourceMonitor:識別壞味道
解決了代碼風格後,是否就可以算做漂亮的代碼了呢。 
要知道再漂亮的衣服穿到胖子身上,也漂亮不到哪去(阿門,原諒我吧)。對於代碼來說,符合代碼風格只是第一步,漂亮的代碼還要易於理解。讓人容易理解的話,單個函數的程式碼就不能太長,嵌套層數就不能太多,分支條件判斷不能太多。這些工作不是代碼風格能解決的。我們需要能夠自動檢查代碼品質的工具-SourceMonitor。
SourceMonitor是一款代碼品質檢查的軟體。能夠檢查檔案中函數的個數,每個函數的程式碼數,注釋比例,函數的調用深度,循環複雜度等。 
其中需要最關鍵的是每個函數循環複雜度和每個函數的程式碼數。循環複雜度是指函數中可獨立執行的路徑,因此函數中每出現一次if/else/while,switch/case/break等,循環複雜度就加1.循環複雜度越高,說明函數中可執行檔路徑越多,也就越複雜。超過一定值如(15或者10)以後就要考慮能否將函數重構了。此外一個函數的程式碼數如果太長,不能一屏顯示的話,不容易讓人記住和理解,也需要對該函數進行提煉。


3 Eclipse的半自動重構
利用SourceMonitor找出需要重構或提煉的函數後,難道又要我手工重構嗎,有沒有重構的工具呢。全自動的目前還沒見過,如果有同學見到,請留言。相比來說,半自動的重構工具還是比較多的,Eclipse中就有一個重構菜單,提供函數提煉,變數或方法重新命名等不少基礎的重構功能。 

Eclipse的半自動的重構能減少人工重構的錯誤,降低開發人員所耗費的精力,這也是為什麼一個我作為C/C++程式員越來越喜歡Eclipse的原因。

4、VisualStdio可以使用StyleCop進行代碼審查

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.