• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    怎樣閱讀源代碼

    發布: 2009-5-14 10:44 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 256次 | 進入軟件測試論壇討論

    領測軟件測試網 由于工作的關系,我常常需要讀一些源代碼,并在上面做一些修改并且拿來使用,或者是借鑒其中的某些部分?梢哉f,open source對于程序員來說,是很有意義的事情。根據我的經驗,讀源代碼,至少有3個好處。第一個好處是可以學習到很多編程的方法,看好的源代碼,對于提高自己的編程水平,比自己寫源代碼的幫助更大。當然不是說不用自己寫,而是說,自己寫代碼的同時,可以從別人寫的好的源代碼中間學習到更多的編程方法和技巧。第二個好處是,可以提高自己把握大規模源代碼的能力。一個比較大型的程序,往往都是經過了很多個版本很長的時間,有很多人參與開發,修正錯誤,添加功能而發展起來的。所以往往源代碼的規模都比較大,少則10-100多k, 多的有好幾十個MB. 在閱讀大量源代碼的時候,能夠提高自己對大的軟件的把握能力,快速了解脈絡,熟悉細節,不僅僅是編程技巧,還能在程序的架構,設計方面提高自己的能力。(這里說一句題外話,<<設計模式>>這本書相信很多人都看過,而且很多人對它推崇備至,奉為經典,F在也出了不少書,都是冠以"設計模式"這一名稱。在書中就提到,設計模式并不是一本教材,不是教你如何去編程序,而是把平時編程中一些固定的模式記錄下來,加以不斷的測試和改進,分發給廣大程序員的一些經驗之談。我在看這本書的時候,有一些地方一些設計方法往往讓我有似曾相識的感覺,另外一些則是我以前就常常用到的。而這些經驗的獲得,一部分得益于自己的編碼過程,另外一個很重要的來源就是閱讀別人寫的源代碼。)閱讀源代碼第三個好處,就是獲得一些好的思想。比如,有很多人在開始一個軟件項目之前都喜歡到sourceforge.net上去找一下,是否有人以前做過相同或者相似的軟件,如果有,則拿下來讀一讀,可以使自己對這個軟件項目有更多更深的認識。我以前曾經想找一本關于如何閱讀源代碼的書來看看,卻沒有找到。相反,倒是找到了不少分析源代碼的書,比如Linux kernel, Apache source, 等等。所以我想,為什么不自己來寫下一些經驗和大家交流呢?(當然不是寫書,沒有那個能力也沒有那個時間。)所以在這里我準備用一個例子來寫一下如何閱讀源代碼,分享一些經驗,算是拋磚引玉吧!

      我找的例子是一個統計日志的工具,webalizer. (這個工具我以前用過,似乎記得以前的版本是用perl寫的,不知道現在為什么作者把它完全修改成了C,可能是為了效率,也可能根本就是我記錯了。)之所以選擇這個軟件來作為例子,一方面是因為它是用C寫的,流程比較簡單,沒有C++的程序那么多的枝節,而且軟件功能不算復雜,代碼規模不大,能夠在一篇文章的篇幅里面講完; 另外一個方面是因為恰巧前段時間我因為工作的關系把它拿來修改了一下,剛看過,還沒有忘記。 :-)我采用的例子是webalizer2.01-09, 也可以到它的網站http://www.mrunix.net/webalizer/下載最新的版本。這是一個用C寫的,處理文本文件(簡單的說是這樣,實際上它支持三種日志文本格式:CLF, FTP, SQUID), 并且用html的方式輸出結果。讀者可以自己去下載它的源代碼包,并一邊讀文章,一邊看程序。解壓縮它的tar包(我download的是它的源代碼tar包),在文件目錄中看到這樣的結果:


    $ ls
    aclocal.m4 dns_resolv.c lang output.h webalizer.1
    CHANGES dns_resolv.h lang.h parser.c webalizer.c
    configure graphs.c linklist.c parser.h webalizer.h
    configure.in graphs.h linklist.h preserve.c webalizer_lang.h
    COPYING hashtab.c Makefile.in preserve.h webalizer.LSM
    Copyright hashtab.h Makefile.std README webalizer.png
    country-codes.txt INSTALL msfree.png README.FIRST
    DNS.README install-sh output.c sample.conf

     

      首先,我閱讀了它的README(這是很重要的一個環節), 大體了解了軟件的功能,歷史狀況,修改日志,安裝方法等等。然后是安裝并且按照說明中的缺省方式來運行它,看看它的輸出結果。(安裝比較簡單,因為它帶了一個configure, 在沒有特殊情況出現的時候,簡單的./configure, make, make install就可以安裝好。)然后就是閱讀源代碼了。我從makefile開始入手(我覺得這是了解一個軟件的最好的方法)在makefile開頭,有這些內容:


    prefix = /usr/local
    exec_prefix = ${prefix}
    BINDIR = ${exec_prefix}/bin
    MANDIR = ${prefix}/man/man1
    ETCDIR = /etc
    CC = gcc

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: 源代碼 閱讀

    21/212>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>