Ich versuche immer, das DRY- Prinzip bei der Arbeit strikt zu befolgen . Jedes Mal, wenn ich Code aus Faulheit wiederholt habe, wird er später zurückgebissen, wenn ich diesen Code an zwei Stellen pflegen muss.
Aber oft schreibe ich kleine Methoden (vielleicht 10 - 15 Codezeilen), die in zwei Projekten wiederverwendet werden müssen, die sich nicht gegenseitig referenzieren können. Die Methode hat möglicherweise etwas mit Networking / Strings / MVVM usw. zu tun und ist im Allgemeinen eine nützliche Methode, die nicht spezifisch für das Projekt ist, in dem sie ursprünglich eingesetzt wurde.
Die Standardmethode zur Wiederverwendung dieses Codes besteht darin, ein unabhängiges Projekt für den wiederverwendbaren Code zu erstellen und dieses Projekt bei Bedarf zu referenzieren. Das Problem dabei ist, dass wir in einem von zwei weniger als idealen Szenarien enden:
- Wir haben am Ende Dutzende / Hunderte von kleinen Projekten - jedes um die kleinen Klassen / Methoden aufzunehmen, die wir wiederverwenden mussten. Lohnt es sich,
.DLL
für ein kleines Stück Code ein ganz neues zu erstellen? - Am Ende haben wir ein einziges Projekt mit einer wachsenden Sammlung von Methoden und Klassen, die nichts miteinander zu tun haben. Für diesen Ansatz habe ich in einem Unternehmen gearbeitet. Sie hatten ein Projekt mit dem Namen,
base.common
das Ordner für Dinge enthielt, die ich oben erwähnte: Vernetzung, String-Manipulation, MVVM usw. Es war unglaublich praktisch, aber das Verweisen darauf zog unnötigerweise den ganzen irrelevanten Code mit sich, den Sie nicht brauchten.
Meine Frage lautet also:
Wie kann ein Softwareteam kleine Codestücke zwischen Projekten am besten wiederverwenden?
Ich bin besonders interessiert, wenn jemand in einem Unternehmen gearbeitet hat, das Richtlinien in diesem Bereich hat, oder wenn dieses Dilemma wie ich persönlich aufgetreten ist.
Hinweis: Meine Verwendung der Wörter "Project", "Solution" und "Reference" stammt aus der .NET-Entwicklung in Visual Studio. Aber ich bin sicher, dass dieses Problem sprach- und plattformunabhängig ist.