2014-09-10 3 views
5

Eine Menge Zeit sehe ich Leute ein Projekt in zwei separate Projekte, wie in diesem Screenshot Aufspaltung:Worin besteht der Zweck, ein Projekt in zwei separate Projekte aufzuteilen?

enter image description here

Was ist der Sinn von seperating Ingot und IngotAPI ist, anstatt sie beide im selben Projekt des Setzens weil sie sowieso zusammen kompiliert werden?

+1

vielleicht können Sie sie separat verteilen, wenn ein anderes Projekt nur eines von ihnen benötigt, zum Beispiel – Leo

+0

[Modularität erhöhen] (http://en.wikipedia.org/wiki/Modular_programming). Ohne etwas über dieses spezielle Projekt zu wissen, haben Kern- und API-Module normalerweise unterschiedliche Funktionen. Vielleicht ist diese Frage besser für [Programmers.SE] (http://programmers.stackexchange.com/) geeignet? – blgt

+1

Dies ist so nicht eine meinungsbasierte Frage. – Andres

Antwort

1

Mehrere Fälle.

Benötigen oder wollen API entkoppelt von (einer von) seiner Implementierung. Mit der Java SPI (Service Provider Interface) stellen Sie nur eine Schnittstelle zur Verfügung, gegen welche Client-Anwendungsprogramm.Dann bietet der Java-SPI eine Suche, um eine der möglichen Implementierungen zu verwenden. Wird für den XML-Parser verwendet. Ähnlich für JDBC. Das Entkoppeln einer API bedeutet, dass ein Client nicht neu kompiliert werden muss, wenn die API unverändert bleibt, die Implementierung jedoch geändert wurde.

Im Allgemeinen mit mehreren Projekten ermöglicht es, jedes Projekt ein Modul zu betrachten, eine Einheit, die eine angegebene Liste anderer Module importiert und eine hierarchische Hierarchie bildet. Dies kann einem Softwaresystem eine viel höhere Qualität geben, keine Hin- und Herimporte. Next Generation Java wird Module bekommen.

0

Zuerst zu Code mehr wiederverwendbar gemacht. Durch das Packen verschiedener Projektfunktionen in verschiedene Projekte ist es einfacher, die Funktionalität zu finden, die Sie in ein anderes Projekt übertragen möchten (in diesem Fall könnten Sie die gesamte IngotAPI in ein neues Projekt exportieren). Sekunde zum Testen. Es ist viel einfacher, das Testergebnis unter Kontrolle zu halten, wenn jedes Projekt einen eigenen Komponententest hat, und dann ein Test, der die Integration zwischen den beiden Projekten überprüft.

Zum Beispiel, wenn die IngotAPI gut entwickelt ist, sollte es keine Abhängigkeiten zum Ingot-Projekt haben. Das bedeutet, dass Sie, wenn Sie Änderungen am Ingot-Projekt vornehmen, IngotAPI nicht unabhängig testen müssen, da es nicht betroffen ist (hohe Kohäsion), müssen Sie nur Ingot testen, und der Wo-Ingot verwendet IngotAPI.

0

IngotAPI scheint etwas zu sein, auf das man leicht aus anderen Projekten verweisen sollte. Vielleicht wird es in Zukunft woanders verwendet werden.

Am Ende ist es nicht wirklich wichtig, wie Sie auch Ihre Klassen aus anderen Projekten in die jüngste kopieren können.

0

Der Hauptgrund ist, dass wenn Sie eine API implementieren, Sie es an die potenziellen Clients verteilen möchten. Durch die Aufteilung in zwei (oder mehr) Projekte können Sie nur die Schnittstellen und Geschäftsobjekte verteilen und die Implementierung für sich behalten.

Auf diese Weise müssen Sie keine Implementierungsänderung neu verteilen.

1

Ein Grund dafür ist, dass eine Implementierung austauschbar sein kann.

Stellen Sie sich eine Situation vor, in der Sie zwei Clients haben, die Ihre Anwendung verwenden. Beide haben unterschiedliche Anforderungen für eine Vorgehensweise (z. B. Algorithmus ist anders), aber eine Art von Ergebnis ist das gleiche. In diesem Fall sollte der Client-Code direkt nur mit der API funktionieren und ist nicht von einer Implementierung abhängig. Während eines Builds können Sie angeben, welche Implementierung verwendet werden soll.

Mit dieser Lösung:

  • wenn jeder neue Kunde kommt man leicht eine Implementierung für neue Anforderung erstellen, ohne API zu ändern oder einen Client-Code. Es macht Ihren alten Code wiederverwendbar.
  • Sie müssen API oder einen Client nicht neu erstellen, wenn Änderungen nur in einer Implementierung vorgenommen wurden. Es spart Entwicklern Zeit während der Arbeit.
  • während der Tests können Sie eine Implementierung mit Attrappen für einige Teile der Geschäftslogik bieten
Verwandte Themen