2009-02-20 60 views
2

我正在維護兩個非常類似的調度器 - 一個用Java和一個用C#。 C#版本最初是使用JLCA創建的,然後通過手動修改。 Java版本在過去幾個星期裏被其他人修改得非常顯着(所以我必須追查他的改動),我想知道是否使用互聯網上可用的工具之一重新轉換它,或者是否嘗試每當需要時手動進行更改。這個問題對我來說可能會頻繁出現 - 是否有某種方法可以用兩種不同的語言來維護軟件版本,並儘可能無痛地讓它們保持一致?建議將不勝感激!Java和C並行開發#

回答

2

我已經使用過的,現成的代碼轉換器保持在兩種不同的語言(項目注意,我沒有說轉換非常糟糕的經歷,我完全相信,這樣做的初始轉換/清理使用自動化工具可能有可取之處。)

There are people who support multiple platforms regularlyand they love to point out the pains of language selection without their own in-house tools,但他們傾向於使用專門的語言或按照慣例約束自己的一套語言結構,讓他們中間的編譯器能爲他們做繁重的工作。

缺乏一些很酷的專有交叉編譯器,以及隨之而來的代碼慣例,我會親自去做這項工作。這個技巧將嚴格監控checkins,並確保在兩個地方都檢查功能。根據問題的嚴重程度,您可以創建一個源代碼控制過程(可以從壓迫和痛苦到相對較輕的重量),這可以幫助保證這一點(例如,您可以要求開發人員僅檢查分支的更改直到端口在兩個平臺上完成,然後將兩者合併。)

2

我不確定這是否適合您,但您可能需要考慮使用Java進行開發,然後使用IKVM將jar文件轉換爲.NET程序集。我已經使用了幾年,但當時它工作得很好。

1

我會親自維護這些差異。這意味着,如果在某些時候,在.NET中做一些不同的事情更有意義(這很可能是這種情況,爲了使代碼習慣用法),您不需要手動重新應用該更改。

另一個選擇是做原始Java代碼的轉換,複製它,然後做修改後的Java代碼的轉換。對兩次轉換的結果進行區分,並將該更改應用於現有代碼,以便簡單地完成此操作。這可以幫助您避免在執行「gruntwork」轉換時保留現有代碼。

0

你有沒有考慮過J#?

根據您的需要和配置,您可以交叉編譯Java代碼和J#代碼。您可能需要將通用部分重構爲可在任一環境中編譯的獨立模塊(J#停留在Java 1.2中,只有1.3個類)。請記住,J#是舊的,在VS 2008中不再可用(您需要Visual Studio 2005的舊版本),但根據您的項目複雜程度,這可能是一個可行的解決方案。

0

如果它們非常相似,那麼在維護這兩個版本時是否有真正的優勢?也許你可以把他們其中的一個...