乃宏 發問時間: 電腦與網際網路程式設計 · 2 0 年前

如何看懂別人的程式?

公司的前輩們總是告訴我們,進步的要快,就是要多看別人的程式!

我想我應該不是第一個聽過這種理論的人了,因為本身我們也是都會寫,也寫過不少東西,但是我們的程式教育(尤其在學校),卻完全沒有教我們如何去看懂別人的程式!

請問各位先進,在看別人的程式前,你們有什麼比較好的建議或是流程嗎?還是有什麼原則可以把握呢?在看別人的程式時,有什麼好方法能夠確認自己真的懂了原作者的流程及邏輯呢?我試了很多方法,覺得難度真的好高,請各位先進談談自己的經驗吧。

已更新項目:

我想,Trace別人程式的動作,大家是差不多的。設幾個中斷點查流程,看變數值的變化查意義,這些我是知道的。但是有一個關鍵的問題,時間在有限的情況下,如果別人的模組又不是寫的很獨立,這樣的動作,勢必導致Trace的動作範圍擴大到整個程式,而很不容易可以"各個擊破"。這是不是…無解了?

各位在看模組的時候,會有看不懂的狀況吧?這個時候各位是選擇先跳過不看這部分,先找看得懂的部分呢?還是一定要以模組為單位,設定更多的中斷點,查更多的變數來各個擊破呢?

8 個解答

評分
  • 阿宏
    Lv 6
    2 0 年前
    最佳解答

    基本上如果要學習程式的話,看別人程式是一種途徑,不過如果是看很爛的人寫的程式,看了N次,也不會進步,首先要買一本好的書,何謂好的書,就是自已看的懂的教學方法,由淺開始,必需注重基礎及觀念,先按照書上教的小範例,也就是小程式,如九九乘法等..較簡易的程式開始練習著手,一來很快就會有成就感,也會激起你對程式的研究動機,等到有了基本概念後,開始了解你要學的程式語言的語法,因為每個程式語言的語法盡不相同,不過原理相通,所以我之前所說的,注重基礎及觀念,就是這個道理,語法不同,原理相通,如每個程式語言都會有「迴圈」,都會有「變數」...只是語法上表達的不同吧了...以上意見供你參考囉!

    回應「龍」

    阿宏,三人行必有我師.看不好的程式可以從別人的錯誤中吸取經驗啊

    你說的很好,吸取經驗是對的,不過對於初學者來說,是沒辦法判斷何者

    是錯唷..因為初學者連基本的語法或是屬性或是方法不了解的話..如何判斷

    有錯,錯不見的就是語法上的錯,如邏輯上的錯誤,這種錯是最難抓。

    回應新補充的

    Trace別人的程式,其實大家都差不多的,在於方法,我可以提供一個好的方

    法就是先大略了解該模組的功能,不用詳細了解,然後用紙記錄下來,然一

    邊畫出架構圖,並寫上該模組的主要功能為何?然後未來遇到問題要修正時

    ,這個架構圖形同一本書的目錄,你自然會很快找到你要的模組來處理,這

    時再詳加了解,一來快速找到要修改的地方,二來又詳細了解該程式的處理

    過程,接著,時間一久,你的功力就會進步的比別人快,快速了解別人的程

    式及架構。你是在寫那方面的程式呢?有興趣大家交個朋友唷...可以線上討論

    唷..我的email:johnnickkimo@yahoo.com.tw

    參考資料: 自已的概念
  • ?
    Lv 6
    2 0 年前

    先找一個功能,然後一步一步順著它的流程開始,例如有個記事本程式。。。可以先從開啟檔案的功能開始瞭解。。。看看按下開啟之後,第一個呼叫的是什麼。。。第二個呼叫的是什麼。。。一面看流程。。。一面瞭解物件的職責。。。並記下來。。。照著這樣的方式。。。就可以大致瞭解每個物件在作什麼。。。再來試著畫出架構圖。。。一面畫您就可以一面瞭解了。。。

    2005-08-04 08:28:40 補充:

    看不好的程式可以一面想若是我的話會怎麼改。。。練習refactor。。。

  • 匿名使用者
    2 0 年前

    不是OO的程式也能畫Use Class嗎???

  • Lv 7
    2 0 年前

    阿宏,三人行必有我師.看不好的程式可以從別人的錯誤中吸取經驗啊

  • 您覺得這個回答如何?您可以登入為回答投票。
  • 匿名使用者
    2 0 年前

    1、在看別人的程式前,先想想看如果是自己寫的話,應該要怎麼寫。

    2、先略看整個架構或畫出 use clas。

    3、記下Class的繼承關係及用途。如果可以的話,自己寫一支程式,測試Class的用途。(畫出class繼承圖)

    4、再詳細看Class的method/propery/event

    5、可以邊debug邊了解程式。

    6、把握要點:分割程式,再個個擊破。

    7、之後,整理一下,如果要改進的話,應該如何重構,及如何讓別人看的懂自己的程式。

    2005-08-04 14:12:35 補充:

    不是OO是可以畫Use case(使用案例), 不能畫Class Diagram

  • 匿名使用者
    2 0 年前

    我覺得先讓程式跑起來,玩一玩,

    把流程搞清楚,

    然後,改程式碼,看看會有什麼結果,

    最後模仿出來,等到需要用的時候,就不知不覺中會了。

    參考資料: 自己的經驗。
  • 匿名使用者
    6 年前

    【亞洲36588合法彩券公司直營 官網: A36588.NET 】

    【 最新活動→迎接新會員,首存狂送20% 】

    【運動→電子→對戰→現場→彩球 】

    【免費服務 →電影區、討論區、KTV歡唱、運動轉播、即時比分、24H客服 】

    【亞洲36588合法彩券公司直營 官網: A36588.NET 】

  • 匿名使用者
    7 年前

    台灣第一家合法博弈娛樂城熱烈開幕!

    運動彩、遊戲對戰、現場百家樂、多國彩球

    高賠率投注,歡迎您免費體驗!

    官方網站 ss777.net

還有問題?馬上發問,尋求解答。