2014-09-10 95 views
5

很多時候,我看到人們在這個截圖分手了項目成2個獨立的項目,如:將項目分成兩個獨立的項目有什麼意義?

enter image description here

什麼是分隔條件錠和IngotAPI,而不是把他們都在同一個項目點因爲他們無論如何都被編譯在一起?

+1

也許你可以單獨分發它們,如果其他項目只需要其中一個例如 – Leo 2014-09-10 12:17:15

+0

[增加模塊性](http://en.wikipedia.org/wiki/Modular_programming)。如果不知道這個特定項目的任何內容,Core和API模塊通常具有不同的功能。也許這個問題可能更適合[Programmers.SE](http://programmers.stackexchange.com/)? – blgt 2014-09-10 12:28:31

+1

這不是一個基於意見的問題。 – Andres 2014-09-10 13:04:58

回答

1

幾個案例的某些部分。

需要或希望使API 從其實施(其中之一)解耦。使用Java SPI(服務提供者接口),您只需提供一個接口,針對哪個客戶端應用程序。然後,java SPI提供查找來使用其中一種可能的實現。用於XML解析器。類似於JDBC。將API解耦意味着如果API保持不變,則不需要重新編譯客戶端,但實現已更改。

通常有幾個項目允許考慮每個項目模塊,一個單元,導入其他模塊的指定列表,並形成一個分層的層次結構。這可以爲軟件系統提供更高的質量,無需來回進口。下一代Java將獲得模塊。

0

首先使代碼更加可重用。通過在不同的項目中打包不同的功能,可以更容易地找到想要傳送到另一個項目的功能(在這種情況下,您可以將整個IngotAPI導出到新項目中)。 第二次測試。當每個項目將自己的單元測試分開時,保持控制測試結果要容易得多,而不是檢查兩個項目之間的集成的測試。

例如,如果IngotAPI發展良好,則不應該對Ingot項目有任何依賴性。這意味着,如果您對Ingot項目進行了任何更改,則不需要獨立測試IngotAPI,因爲它不會受到影響(高內聚性),您只需測試Ingot以及Ingot使用IngotAPI的位置。

0

IngotAPI似乎應該很容易從其他項目中引用。 也許它會在未來的其他地方使用。

最後它並不重要,因爲您也可以將您的課程從其他項目複製到最近的課程中。

0

主要原因是當你實現一個API時,你想把它分發給潛在的客戶端。通過分成兩個(或更多)項目,您只能分配接口和業務對象,併爲自己保留實現。

通過這種方式,您不必在任何實施變更上重新分配。

1

這樣做的一個原因是實現可以互換。

想象一下,您有兩個客戶使用您的應用程序的情況。他們對於如何做某事都有不同的要求(如算法不同),但結果的類型是相同的。在這種情況下,客戶端代碼應該只能直接與API協同工作,而不依賴任何實現。在構建期間,您可以指定應該使用哪個實現。

有了這個解決方案:

  • 如果有新的客戶端到達,你會很容易地創建新的要求,實現在不改變API或客戶端代碼。它使您的舊代碼更加可重用。
  • 如果僅在實施中進行了更改,則不必重新構建API或客戶端。它可以節省開發者在工作中的時間
  • 在測試過程中,你可以提供一個實現與模擬UPS的業務邏輯
相關問題