我正在開發一個java項目,我必須擴展(增加更多功能)。但是我不知道在融合之前應該如何學習現有的。 我有什麼特別的路要走? 我可以以某種方式運行它,以便我可以通過聲明查看程序的執行情況嗎?瞭解大型Java程序
我是一種卡在瞭解它,謝謝。
我正在開發一個java項目,我必須擴展(增加更多功能)。但是我不知道在融合之前應該如何學習現有的。 我有什麼特別的路要走? 我可以以某種方式運行它,以便我可以通過聲明查看程序的執行情況嗎?瞭解大型Java程序
我是一種卡在瞭解它,謝謝。
您可以隨時在調試器/您選擇的IDE中啓動它,並逐步完成所有您想要的操作,儘管最好找到更熟悉源代碼的人員以提供概述,或查找關於從何處開始的文檔。
感謝您的快速回復,但問題在於它是一個名爲YETI的軟件測試程序,我通過提供所需參數和要測試的類在eclipse中運行,但在點擊進入按鈕之後,程序將異常但沒有調試器,它運行平穩。 – 2011-02-11 22:32:26
我試過這個,但經過幾步之後,它給了classnotfoundexception,所以未能繼續。 – 2011-03-02 20:07:43
選擇您理解要求的一項功能。找到該功能的入口點,並按照該功能的代碼進行操作。它應該讓你很好地理解架構的工作原理。
我試過這個,但失敗.... – 2011-03-02 20:06:47
我建議您先從調試開始,以便您可以一步一步地完成程序。
這是一個關於堆棧溢出的經常性問題。已經有很好的答案各地:
此外,這本書可以幫助:Working Effectively with Legacy Code
「耐心和毅力可以征服一切。 「 - Ralph Waldo Emerson
我沒有太多時間,因爲我正在做博士,我必須顯示結果.... – 2011-03-02 20:08:18
與已編寫的代碼集成可能非常困難。根據我的經驗,我已經獲得的關於已經編寫代碼的一些最好線索來自方法簽名(函數輸入到其輸出的映射)。該方法的簽名可以爲您提供很多關於程序的提示,即在何處以及特定方法如何適用於較大程序的情況。通常,方法簽名與描述性方法名稱相結合可以爲您提供足夠的信息,尤其是在像Java這樣的類型化語言中。儘管我不會建議逐行運行代碼並查看更改(因爲這通常相當於大量工作),但對於非常醜陋但很重要的代碼,有時候這是非常必要的(我已經在使用definitley之前完成了它DDD for C程序)。在這種情況下,快速谷歌搜索顯示http://www.debugtools.com/,這是一個圖形化的Java調試器,它可以做到這一點;似乎也有與Java一起工作的DDD版本。
這是另一種方法,它是hacky,但是我發現它在過去無法附加調試器時很有用。如果您正在查看一段代碼,但很難弄清楚誰正在調用它,則可以拋出一個新的運行時異常,並捕獲它並打印堆棧跟蹤。
try { throw new RuntimeException("who is calling me"); } catch (RuntimeException e) { e.printStackTrace(); }
文檔:
如果有文件,這將是有幫助的。但它可能是一個陷阱,儘可能多的文檔已經過時,它們可能會誤導你。
修正:
您可以用bug修正或新功能植入啓動。開始小範圍的工作,這將是一件容易的工作。在錯誤修復期間,您可以越來越多地理解代碼。
以下是如果你使用Eclipse或類似的產品
遺留代碼 - 生活中所有問題的原因和解決方案 – ryebr3ad 2011-02-11 22:29:05
[接管項目 - ](http://stackoverflow.com/questions/3147059/taking-over-a -project) – 2011-02-11 22:49:24