Frage

Wann ist es bei der Aufteilung einer Lösung in logische Ebenen am besten, ein separates Projekt zu verwenden, anstatt nur nach einem Ordner zu gruppieren?

War es hilfreich?

Lösung

Standardmäßig, Erstellen Sie immer einfach einen neuen Ordner innerhalb desselben Projekts

  • Sie erhalten eine Einzelmontage (ohne zusätzliche ILMerge-Gymnastik)
  • Leichter zu verschleiern (da Sie weniger öffentliche Typen und Methoden haben, idealerweise gar keine)

Die Aufteilung Ihres Quellcodes in mehrere Projekte macht nur dann Sinn, wenn Sie ...

  • Einige Teile des Quellcodes sind Teil des Projekts, können aber standardmäßig oder überhaupt nicht bereitgestellt werden (Komponententests, zusätzliche Plugins usw.).
  • Es sind mehr Entwickler beteiligt und Sie möchten ihre Arbeit als verbrauchbare Blackbox behandeln.(nicht sehr empfehlenswert)
  • Wenn Sie Ihr Projekt klar in isolierte Ebenen/Module unterteilen können und sicherstellen möchten, dass diese nicht gegenseitig konsumieren können intern Mitglieder.(auch nicht empfohlen, da Sie entscheiden müssen, welcher Aspekt am wichtigsten ist)

Wenn Sie der Meinung sind, dass einige Teile Ihres Quellcodes wiederverwendbar sein könnten, erstellen Sie ihn dennoch nicht als neues Projekt.Warten Sie einfach, bis Sie es wirklich in einer anderen Lösung wiederverwenden möchten, und isolieren Sie es bei Bedarf aus dem ursprünglichen Projekt.Programmieren ist kein Lego, die Wiederverwendung ist meist sehr schwierig und gelingt oft nicht wie geplant.

Andere Tipps

Die Aufteilung von Features in Projekte ist oft eine Optimierung der YAGNI-Architektur.Wie oft haben Sie diese einzelnen Projekte wirklich wiederverwendet?Wenn es nicht häufig vorkommt, verkomplizieren Sie Ihre Entwicklung, Erstellung, Bereitstellung und Wartung durch die theoretische Wiederverwendung.

Ich bevorzuge die Aufteilung in Ordner (unter Verwendung geeigneter Namespaces) und die Umgestaltung in separate Projekte, wenn Sie einen realen Anwendungsfall für die Wiederverwendung haben.

Denny schrieb:

Ich persönlich bin der Meinung, dass es einfacher ist, wiederverwendbaren Code, wenn er in Projekte aufgeteilt wird, an anderen Orten zu verwenden, als wenn er sich nur in Ordnern befindet.

Ich stimme dem wirklich zu – wenn Sie es wiederverwenden können, sollte es in einem separaten Projekt sein.Abgesehen davon ist es auch sehr schwierig, es effektiv wiederzuverwenden :)

Hier bei SO haben wir versucht, mit drei Projekten ganz einfach zu sein:

  • MVC-Webprojekt (das Ihre Ebenen standardmäßig gut in Ordner aufteilt)
  • Datenbankprojekt zur Quellcodeverwaltung unserer Datenbank
  • Unit-Tests gegen MVC-Modelle/Controller

Ich kann nicht für alle sprechen, aber ich bin zufrieden damit, wie einfach wir es gehalten haben – es beschleunigt den Aufbau erheblich!

Normalerweise mache ich ein Projekt für die GUI, ein Projekt für die Geschäftslogik, ein Projekt für den Datenzugriff und ein Projekt für Unit-Tests.

Manchmal ist es jedoch ratsam, eine Trennung nach Diensten vorzunehmen (wenn Sie eine serviceorientierte Architektur verwenden), z. B. Authentifizierung, Verkauf usw.

Ich schätze, die Faustregel, nach der ich arbeite, lautet: Wenn man es als eine Komponente betrachten kann, die eine klare Trennung der Belange hat, könnte ein anderes Projekt sinnvoll sein.Aber ich denke, dass Ordner im Vergleich zu Projekten einfach eine Präferenz oder Philosophie sein könnten.

Ich persönlich bin der Meinung, dass es einfacher ist, wiederverwendbaren Code, wenn er in Projekte aufgeteilt wird, an anderen Orten zu verwenden, als wenn er sich nur in Ordnern befindet.

Das Tennen Ihres Quellcode in mehrere Projekte ist nur sinnvoll, wenn Sie ......Weitere Entwickler beteiligten sich und Sie möchten ihre Arbeit als Verbrauchsschwarzbox behandeln.(Nicht sehr empfohlen) ...

Warum wird das nicht empfohlen?Ich habe festgestellt, dass es eine sehr nützliche Möglichkeit ist, eine Anwendung zu verwalten, bei der mehrere Entwickler an unterschiedlichen Teilen arbeiten.Erleichtert das Einchecken erheblich, vor allem durch die praktisch Eliminierung von Zusammenführungen.Sehr selten müssen zwei Entwickler gleichzeitig an demselben Projekt arbeiten.

Wenn Sie mehrere Projekte erstellen möchten, stellen Sie sicher, dass jeder, der der Lösung Code hinzufügt, sich der Absicht voll bewusst ist und alles tut, damit er die Abhängigkeiten zwischen den Projekten versteht.Wenn Sie jemals versucht haben, das Chaos zu beseitigen, wenn jemand Verweise hinzugefügt hat, die nicht dort hätten sein sollen, und wochenlang damit durchgekommen ist, werden Sie diesen Punkt verstehen

Ich denke wirklich, dass es auch besser ist, das Projekt aufzuteilen, aber es hängt alles von der Größe des Projekts und der Anzahl der Leute ab, die daran arbeiten.

Für größere Projekte habe ich ein Projekt für

  • Datenzugriff (Modelle)
  • Dienstleistungen
  • Frontend
  • Tests

Ich habe das Modell von Rob Connery und seiner Storefront-Anwendung bekommen ...scheint wirklich gut zu funktionieren.

mvc-storefront

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top