2011-02-11 43 views
6

我正在開發一個java項目,我必須擴展(增加更多功能)。但是我不知道在融合之前應該如何學習現有的。 我有什麼特別的路要走? 我可以以某種方式運行它,以便我可以通過聲明查看程序的執行情況嗎?瞭解大型Java程序

我是一種卡在瞭解它,謝謝。

+0

遺留代碼 - 生活中所有問題的原因和解決方案 – ryebr3ad 2011-02-11 22:29:05

+2

[接管項目 - ](http://stackoverflow.com/questions/3147059/taking-over-a -project) – 2011-02-11 22:49:24

回答

1

您可以隨時在調試器/您選擇的IDE中啓動它,並逐步完成所有您想要的操作,儘管最好找到更熟悉源代碼的人員以提供概述,或查找關於從何處開始的文檔。

+0

感謝您的快速回復,但問題在於它是一個名爲YETI的軟件測試程序,我通過提供所需參數和要測試的類在eclipse中運行,但在點擊進入按鈕之後,程序將異常但沒有調試器,它運行平穩。 – 2011-02-11 22:32:26

+0

我試過這個,但經過幾步之後,它給了classnotfoundexception,所以未能繼續。 – 2011-03-02 20:07:43

1

選擇您理解要求的一項功能。找到該功能的入口點,並按照該功能的代碼進行操作。它應該讓你很好地理解架構的工作原理。

+0

我試過這個,但失敗.... – 2011-03-02 20:06:47

0

我建議您先從調試開始,以便您可以一步一步地完成程序。

1

這是一個關於堆棧溢出的經常性問題。已經有很好的答案各地:

此外,這本書可以幫助:Working Effectively with Legacy Code

「耐心和毅力可以征服一切。 「 - Ralph Waldo Emerson

+0

我沒有太多時間,因爲我正在做博士,我必須顯示結果.... – 2011-03-02 20:08:18

1

與已編寫的代碼集成可能非常困難。根據我的經驗,我已經獲得的關於已經編寫代碼的一些最好線索來自方法簽名(函數輸入到其輸出的映射)。該方法的簽名可以爲您提供很多關於程序的提示,即在何處以及特定方法如何適用於較大程序的情況。通常,方法簽名與描述性方法名稱相結合可以爲您提供足夠的信息,尤其是在像Java這樣的類型化語言中。儘管我不會建議逐行運行代碼並查看更改(因爲這通常相當於大量工作),但對於非常醜陋但很重要的代碼,有時候這是非常必要的(我已經在使用definitley之前完成了它DDD for C程序)。在這種情況下,快速谷歌搜索顯示http://www.debugtools.com/,這是一個圖形化的Java調試器,它可以做到這一點;似乎也有與Java一起工作的DDD版本。

3

這是另一種方法,它是hacky,但是我發現它在過去無法附加調試器時很有用。如果您正在查看一段代碼,但很難弄清楚誰正在調用它,則可以拋出一個新的運行時異常,並捕獲它並打印堆棧跟蹤。

 
try { 
    throw new RuntimeException("who is calling me"); 
} catch (RuntimeException e) { 
    e.printStackTrace(); 
} 
0
  • 文檔:

    如果有文件,這將是有幫助的。但它可能是一個陷阱,儘可能多的文檔已經過時,它們可能會誤導你。

  • 修正:

    您可以用bug修正或新功能植入啓動。開始小範圍的工作,這將是一件容易的工作。在錯誤修復期間,您可以越來越多地理解代碼。

0
  1. 基線的代碼,我一般會使用git
  2. 執行應用
  3. 來看,它的生成。
  4. 如果基準失敗建立或處理過於複雜,請創建一個分支並修復它
  5. 創建分支並修改字符串或某些在修改代碼時會顯示某些可見更改的內容。
  6. 如果Javadoc不是通過ant或構建文件創建的,請創建一個新的分支來執行此操作。
  7. 如果沒有JUnit測試用例(或者如果存在但它們不起作用),請創建一個分支並修復它。
  8. 創建一個新分支進行合併。

以下是如果你使用Eclipse或類似的產品

  1. 如果你是唯一的開發商,創建一個新的分支和代碼格式化和清理設置的項目設置。然後執行代碼格式和清理。這將使您可以爲未來的工作建立更穩定的基準線。如果不是,請嘗試與其他人協調。
  2. 安裝FindBugs,Checkclipse,PMD在代碼庫上做一些簡單的檢查。看看WTFs有時會給你一個更好的想法如何工作(或不)
  3. 安裝Eclemma,看看有多少代碼被實際測試。