2011-04-10 93 views
2

有點背景:我正在練習Google Code Jam的前版本,並試圖解決Java中很多這些難題。對於每個難題我都會在Eclipse中創建一個特定的項目。如何使用SVN在多個Eclipse項目之間共享文件?

我還建立了一個小小的「樣本」求解包含輸入/輸出文件通常的操作項目,處理的測試用例,腳本文件對文件快速運行的程序,等等。現在我對每個謎題都使用這個框架,只需修改一個包含主算法的核心「Solver」類。所有其他文件在每個項目中保持不變。

我的問題是,我的版本我的工作,但很明顯,唯一相關的源代碼版本爲每個項目是這樣解算器類(和一些輸入/輸出文件)。其餘的都是重複的,我希望在修改示例項目中的某些內容時可以輕鬆更新它們。

在另一方面,我希望能夠輕鬆地籤一個項目,並把它充分的工作。

我想使用SVN的外部要做到這一點,但外部定義只適用於子目錄 - 和我的相關文件都在同一個文件夾,複製的人。

而且SVN忽略不履行我的目的,因爲我仍然需要手工複製整個每個項目的任何改變我的樣本項目。

你知道處理這個問題的好方法嗎?謝謝!

回答

3

代碼重用通常不使用的版本控制系統,但使用多態性或庫來完成的。使用版本控制系統的一個缺點是你必須做一個svn更新來從存儲庫中取出新的外部存儲器,如果你有很多項目被檢出,這會讓我感到尷尬。需要考慮的另一件事是修改重用代碼時的開發工作流程。爲了測試你的改變,你可能想用一個特定的求解器來運行它們,但是爲了做到這一點,你需要svn更新 - 而且我相信你會忘記每一次,並且想知道爲什麼你的bug修復沒有效果......因此,我推薦以下兩種方法之一:

多態性

把所有的求解器在同一項目中,使重用相當瑣碎。要調用正確的求解器,你可以這樣做:

interface Solver { 
    // your methods 
} 

class Ex1Solver implements Solver { 
    // your solution 
} 

public static void main(String[] args) throws Exception { 
    Solver solver = (Solver) Class.forName(args[0]).newInstance(); 

    // work with solver 
} 

圖書館

定義重用測試工具Eclipse項目,併爲每個解決方案的項目。將重用項目聲明爲解決方案項目的依賴項(在eclipse中,右鍵單擊項目 - >構建路徑 - >配置構建路徑 - >項目 - >添加)。測試工具將以與多態性解決方案相同的方式創建求解器。

+0

我喜歡你的多態性解決方案。我的框架已經建立在由每個特定求解器實現的求解器接口上,但是隨後在每個項目的主要方法中使用特定求解器進行硬編碼,導致非常相似但不相同的代碼。我將使用您的解決方案並將所有內容都傳遞給一個項目,讓批處理文件提供特定的求解器類。非常感謝你! – Dunaril 2011-04-10 13:12:36

2

你可以使用svn:externals和文件(從1.6開始),但我會考慮基於庫的解決方案,因爲它聽起來像你的「框架」就是這樣一種東西。

相關問題