乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      C Java PHP Perl Python的程序代碼美化工具使用

       ekylin 2006-05-06

      C Java PHP Perl Python 的程序代碼美化工具
      (Pretty Print Program/Source Code Beautifier)使用

      作者: 車東 Email: chedongATbigfoot.com/chedongAT

      寫于:2002/04 最后更新: 02/22/2006 14:42:55
      Feed Back >> (Read this before you ask question)
      Creative Commons License

      版權(quán)聲明:可以任意轉(zhuǎn)載,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
      http://www./tech/indent_tools.html

      關(guān)鍵詞:pretty print indent perltidy pydent astyle htmltidy source code beautifier

      內(nèi)容摘要:
      寫本文的目的無(wú)非是2個(gè):

      1. 如果前任程序員縮進(jìn)非常不整齊的代碼非常影響現(xiàn)任維護(hù)者的代碼閱讀速度。
      2. 新的項(xiàng)目代碼(無(wú)論在什么編輯環(huán)境下編寫)都能夠非常好的適應(yīng)公司的縮進(jìn)規(guī)范,可以便于開(kāi)發(fā)者之間的交流。

      如果馬上能從以下列表中找到你需要的就完全不必耐心的看到最后:相應(yīng)工具包中的文檔會(huì)有更詳細(xì)的使用說(shuō)明

      c, c++ c# ==>   indent   Astyle

      java ==> astyle Jalopy Jacobe ImportScrbber

      php ==> phpCodeBeautifier

      perl ==> perlTidy

      python ==> Pydent

      asp ==> VBSBeaut

      程序員應(yīng)該是善于溝通的,代碼美化的意義在于體現(xiàn)了開(kāi)發(fā)者對(duì)他人的尊重,使用好的編碼約定可以使源代碼明白、易讀、準(zhǔn)確,更加直觀且與其他語(yǔ)言約定保持一致,從而讓程序員之間更好的溝通。

      有統(tǒng)計(jì)表明縮進(jìn)良好的代碼可以提高代碼閱讀的效率40%以上,而另一個(gè)統(tǒng)計(jì)是軟件開(kāi)發(fā)工作的70%以上是維護(hù)前人的代碼,因此對(duì)以往代碼的格式美化往往也是系統(tǒng)重構(gòu)(refactoring)的第一步。代碼美化工具(pretty print program)的使用可以使基本的代碼縮進(jìn)規(guī)范成為一種更容易執(zhí)行的制度。

      另外,如果作為部門代碼規(guī)范的制訂者也應(yīng)該了解程序員不是機(jī)器,寫代碼時(shí)完全不犯代碼縮進(jìn)錯(cuò)誤幾乎是不可能的?;诠ぞ叩呐扛袷交驼砉ぞ叻奖愕呐渲脤?dǎo)入/導(dǎo)出機(jī)制制定統(tǒng)一的縮進(jìn)規(guī)范才是一個(gè)真正有可操作性的制度。

      幾種開(kāi)放源代碼的代碼美化工具的介紹

      工具名稱 適用語(yǔ)言 簡(jiǎn)介 安裝/使用
      indent c indent就是代碼美化工具的代名詞 indent是gcc附帶的一個(gè)標(biāo)準(zhǔn)工具,
      indent [options] [input-files]
      indent [options] [single-input-file] [-o output-file]
      perltidy perl
      perltidy本身也是用perl寫的 下載后: perl Makefile.PL;make;make install
      perltidy [ options ] file1 file2 file3 ...
      (output goes to file1.tdy, file2.tdy, file3.tdy, ...)
      perltidy [ options ] file1 -o outfile
      perltidy [ options ] file1 -st >outfile
      perltidy [ options ] <infile >outfile
      astyle c c++ java (php) 一個(gè)速度很快的C/C++/Java源代碼美化工具。
      astyle比indent好在有很多成套的的風(fēng)格定義:ansi java linux...不必記住復(fù)雜的縮進(jìn)具體選項(xiàng)。
      下載源代碼解包后,make, 生成astyle可執(zhí)行文件
      astyle [options] < Original > Beautified
      astyle [options] Foo.cpp Bar.cpp [...]
      astyle --style=ansi *.cpp
      我嘗試過(guò)用它來(lái)格式化PHP程序也很有效(當(dāng)然是不合HTML代碼混在一起的純PHP代碼)。
      jalopy java 功能強(qiáng)大的JAVA代碼格式化工具,除了標(biāo)準(zhǔn)界面外,命令行工具,還可作為ANT JBUILDER ECLIPSE JDEVELOPER等工具的插件使用,并提供API http://prdownloads./jalopy/下載
      并參考相應(yīng)安裝文檔
      pydent python pythius包含了2個(gè)工具:
      pydent: 代碼縮進(jìn)工具
      pystat: 代碼統(tǒng)計(jì)工具
      下載源代碼解包后:
      Run "python setup.py build"
      Run "python setup.py install"
      htmltidy html/xml HTML代碼的糾錯(cuò)工具,可以幫助你的HTML代碼更好的符合W3C規(guī)范,現(xiàn)在被稱作tidy,因?yàn)樗粌H只使用于HTML,也現(xiàn)在也適用于XHTML XML的格式化。

      但JSP不適合ASP PHP JSP等嵌入式腳本的代碼美化

       

      下載源代碼后 make 生成tidy可執(zhí)行文件:
      tidy file1 file2 ...
      注意:對(duì)于含有中文的頁(yè)面要使用 -raw選項(xiàng)
      tidy.exe -raw -imuq -wrap 132 -f %f.err %f
      選項(xiàng)說(shuō)明:
      -raw: 不修改中文字符 (output values above 127 without conversion to entities)
      -i indend 缺省HTML按2個(gè)空格縮進(jìn)
      -m 覆蓋原文件
      -u 強(qiáng)制所有HTML標(biāo)記大寫(這個(gè)可以不加)
      -wrap 頁(yè)面代碼寬度大于132行強(qiáng)制換行
      -f %f.err 將錯(cuò)誤輸出到“相應(yīng)文件名.err”文件中
      HTMLTIDY支持XML的格式美化:
      tidy -xml -imq web.xml
      tidy -xml -imq build.xml

      其他工具介紹:

      php代碼美化工具
      phpCB: php code beautifier 有命令行版本,也有圖形界面的代碼查看器。
      http://www./products/phpCodeBeautifier/

      Java的代碼美化工具
      如果是專門針對(duì)JAVA代碼的格式化,Jacobe也是很好的選擇,它缺省包含了一個(gè)完全按照SUN的代碼規(guī)范的格式化配置文件。而且甚至有JIndent這種商業(yè)化代碼整理工具以獲得更好的效果。

      ImportScrbber: java import聲明的整理工具,能夠?qū)mport java.util.*這樣的引用變成單條的引用,并且?guī)椭鷦h除已經(jīng)不再需要的引用。 http://importscrubber./

      介紹這些工具的都可以在這里可以找到:Jacobe Jindent Jxbeautifier...
      http://directory.google.com/Top/Computers/Programming/Languages/Java/Development_Tools/Code_Beautifiers/

      使用命令行工具實(shí)現(xiàn)代碼的批量修改

      Windows 2000下:用for命令實(shí)現(xiàn)目錄遍歷和文件過(guò)濾及命令執(zhí)行,例如:
      for /R %f in (*.java) do astyle --style=java %f
      for /R %f in (*.htm*) do tidy -raw -imq -wrap 132 -f %f.err %f
      for /R %f in (*.asp) do vbsbeaut.exe -i -s4 %f

      Linux:用find -exec 遍歷執(zhí)行,例如:
      find ./ -name *.java -exec astyle --style=ansi {} \;

      因此不要被很多商業(yè)化軟件漂亮的圖形界面所迷惑,當(dāng)面對(duì)上千個(gè)源文件時(shí),能夠基于命令行的批量操作也是一個(gè)非常重要的功能。

      針對(duì)Eclipse等IDE開(kāi)發(fā)環(huán)境的工具插件使用

      越來(lái)越多的IDE開(kāi)發(fā)環(huán)境都包含了代碼美化功能,但有些仍不如這些專門的工具強(qiáng)大,而且如果開(kāi)發(fā)人員中有的用Eclipse,有的是JBuilder的忠實(shí)用戶,如何讓他們都能方便的遵守代碼規(guī)范呢?答案就是用全Jalopy針對(duì)這些主流IDE開(kāi)發(fā)環(huán)境的插件。
      Jalopy: Java代碼美化工具: http://jalopy./
      Eclipse plug-in: http://jalopy./plugin-eclipse.html
      CheckStyle: Java代碼代碼規(guī)范(縮進(jìn),命名)檢查工具 http://checkstyle.
      Eclipse plug-in: Eclipse Checkstyle Plug-in

      安裝:
      作為Eclipse的插件安裝都非常方便,下載后解包到Eclipse/plug-in/目錄下重啟Eclipse即可:

      配置:
      Jalopy: Windows ==> Jalopy Preference 配置的導(dǎo)入/導(dǎo)出在General選單中,
      CheckStyle: Windows ==> perference ==> checkstyle 配置的導(dǎo)入/導(dǎo)出就在配置界面右側(cè)
      標(biāo)準(zhǔn)配置的導(dǎo)入/導(dǎo)出功能可以大大降低開(kāi)發(fā)人員針對(duì)以上工具的學(xué)習(xí)時(shí)間,對(duì)于大部分開(kāi)發(fā)者來(lái)說(shuō)不需要詳細(xì)了解其中所有的選項(xiàng)配置,只要知道將標(biāo)準(zhǔn)配置導(dǎo)入就可以了。我常用的Jalopy配置文件

      使用:
      Jalopy: 在代碼編輯界面點(diǎn)右鍵的選單中除了原有的Format選項(xiàng)外,還多出了Format with Jalopy選項(xiàng),而Eclipse自身帶有的Source=>Orgenize Imports也是能夠達(dá)到Imports Srubber同樣的功效。
      CheckStyle是一個(gè)非常復(fù)雜的代碼風(fēng)格檢查過(guò)程:包括縮進(jìn),命名規(guī)范等,因此缺省是Disable的,啟動(dòng)針對(duì)一個(gè)項(xiàng)目的CheckStyle需要在點(diǎn):項(xiàng)目的properties==>CheckStyle==>Enable。

      而且以上這些工具都包含了針對(duì)ant的擴(kuò)展,可以方便的加入到ant腳本中進(jìn)行自動(dòng)的代碼整理/統(tǒng)計(jì)。


      參考資料:

      GNU Coding Standards
      http://www./prep/standards_toc.html

      Code Conventions for the Java(TM) Programming Language
      http://java./docs/codeconv/html/CodeConvTOC.doc.html

      PHP Coding Standard
      http:///code/php_coding_standard.html

      Perl Style
      http://www./perl5.6.1/pod/perlstyle.html

      pb: Perl/Javascript Beautifier
      http://www./lutusp/ftp/cgi/pb.txt

      HTML XML XHTML CSS...
      http://www. 

      C-C++ Beautifier HOW-TO:
      http://www./HOWTO/C-C++Beautifier-HOWTO/

      VBScript代碼規(guī)范
      http://msdn.microsoft.com/library/en-us/script56/html/vbsCodingConventions.asp

      VBSBeaut代碼整理工具
      http://www./vbsbeaut/

      Java組件之間的依賴度分析
      http://www./software/JDepend.html

      代碼檢查
      http://www./clover/index.html

      更多XP工具
      http://directory.google.com/Top/Computers/Programming/Languages/Java/Coding_Standards/
      http://www./software.htm
      http://www./CodeCounters.html


      附:為什么HTMLTIDY的不適合重新格式化JSP PHP ASP等HTML嵌入式腳本語(yǔ)言

      而有些無(wú)法解析的錯(cuò)誤其實(shí)是代碼不規(guī)范造成的。

      1. JAVASCRIPT中的"<"
        比如
        for (i = 1; i<a; i++)
        需要改成
        for (i = 1; i < a; i++)
        ^ ^ "<"前后需要加空格,否則HTMLTIDY會(huì)把<a當(dāng)成HTML標(biāo)記
      2. HTML屬性中包含JSP標(biāo)記:
        對(duì)于一般的JSP屬性輸出TIDY是可以認(rèn)出來(lái)的

        比如: <input type=text size="9" name="alias" maxlength=20 value=<%=infoForm.getAlias()%> >
        但像這樣的代碼:
        <img border=0 src=/image/upload/content/<%=infoForm.getId()%><%=infoForm.getPhoto()%> width=120>
        由于屬性的開(kāi)頭不是<%,因此會(huì)出現(xiàn)IMG沒(méi)有結(jié)尾錯(cuò)誤
      3. HTMLTIDY缺省是將代碼完全補(bǔ)齊的,而實(shí)際上很多HTML代碼是在被包含文件中。而且HTMLTIDY對(duì)中文編碼得識(shí)別還有一定問(wèn)題(目前只支持BIG5)

      原因:

      為什么嵌入式代碼很難維護(hù)?畢竟針對(duì)不規(guī)范的HTML語(yǔ)法檢查器要比一個(gè)語(yǔ)言的解析器要復(fù)雜的多。舉例來(lái)說(shuō),比如針對(duì)這樣的代碼:
      <?php echo "<table>";?>
      </table>

      這樣形式的代碼,美化工具必須同時(shí)懂得HTML語(yǔ)法和PHP語(yǔ)法才行,所以大部分格式工具都是針對(duì)一種語(yǔ)言,或者針對(duì)嵌入腳本的程序部分的格式化,或者只對(duì)針對(duì)純HTML格式化。只有少數(shù)Virsual Age, Forte等大型開(kāi)發(fā)工具里包含了JSP的代碼美化,另外就是SLICKEDIT這種大型商業(yè)文本編輯器等。

      解決:對(duì)于包含程序的JSP ASP等文件的HTML部分的格式美化最好還是使用專門的HTML編輯工具Dreamweaver(≥4)和Frontpage(≥2000)中的格式化工具來(lái)實(shí)現(xiàn)。比如:對(duì)于FRONTPAGE從菜單的工具==>網(wǎng)頁(yè)選項(xiàng)==>HTML源代碼選單里選擇“使用下面的規(guī)則重新格式化源代碼”。

      總之,使用HTML和程序在一起的嵌入式腳本語(yǔ)言本身就是一件非常不好的開(kāi)發(fā)習(xí)慣。從長(zhǎng)遠(yuǎn)來(lái)開(kāi)用XML/XSLT等技術(shù)實(shí)現(xiàn)數(shù)據(jù)/表現(xiàn)/邏輯的分離是一種更適合大規(guī)模開(kāi)發(fā)的模式。

      為了目前大量的ASP PHP JSP應(yīng)用我還是通過(guò)Google上找到一些工具,相信HOMESITE等。其實(shí)前面提到的VBSBeautifier其實(shí)也是調(diào)用Perl 5.8在Windows上的

      一個(gè)用于ASP的代碼美化工具:VbsBeaut
      http://www./vbsbeaut/

      一個(gè)用于ASP JSP PHP編輯并帶有代碼美化功能的工具:BPHTML
      http://www./

      一個(gè)基于Java的HTML編輯器,內(nèi)嵌了C C++ Java JavaScript Perl等類C語(yǔ)言的代碼美化器:http://www./arachnophilia/index.html

      Beautifier highlights and indents source code using highlight configuration files (which are similar to Ultraedit highlighting files). As such, it supports C, C#, Java, Perl, PHP, Pascal, Lisp, Mumps, Eiffel, Euphoria, and x86 Assembler, amongst others.
      http://www./

      Trita is a source code beautifier which learns your personal formatting style by examining examples of your code.
      http://www./
      支持:Java, Javscript, CSS, JSP, HTML, ASP, Lisp, Delphi, C#, C++, PHP, Perl, Python, and SQL.

      原文出處:<a href="http://www./tech/indent_tools.html">http://www./tech/indent_tools.html</a>
      <<返回

      <<返回首頁(yè)

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多