Frage

Mit mehr und mehr Projekte unter dem Gürtel finde ich, dass ich bin oft zu wiederholen viele gemeinsame Aufgaben von Projekt Projekt, Client zu Client. So habe ich begonnen, eine „utility“ Bibliothek zusammenzustellen, eine Sammlung dieser gemeinsamen Elemente, die oft von Projekt wiederholt werden, zu projizieren.

Bisher habe ich Dienstprogramme Bilder, um die Größe, Daten exportieren Netze zu übertreffen, E-Mails senden und Zeichen übersetzten Nachrichten ersetzen.

Wenn Sie bauen / eine .NET-Utility-Klasse-Bibliothek, welche Arten von Prozessen würden Sie als hilfreich zu sehen? Welche Namespaces / Gruppen würden Sie sich vorstellen?

Aktualisieren

Ich spreche von einer tatsächlichen Klassenbibliothek, getrennt in Namespaces Gruppe gemeinsamer Elemente.

War es hilfreich?

Lösung

  1. Ich würde nicht eine Bibliothek namens ‚Gemeinsame‘ oder ‚Dienstprogramme‘ oder ‚Sonstiges‘ oder ... Sie bekommen die Idee schreiben. Stattdessen würde ich ein Verzeichnis mit dem Namen ‚Lib‘ habe, und habe jeden Bereich der Funktionalität in einer separaten Bibliothek unter dem. Zum Beispiel könnte ich Lib / Trace, Lib / UI, Lib / Net, Lib / Web für ein C ++ Projekt. Für C #, würde ich Lib / Acme.Trace, Lib / Acme.Windows.Forms, Lib / Acme.Net usw. (vorausgesetzt, Ihre Top-Level-Namespace / Firma 'Acme' genannt wird).
  2. YAGNI. Gehen Sie nicht das Schreiben von Code, den Sie Macht Bedarf.
  3. Werfen Sie keine Dinge in eine gemeinsame Bibliothek, bis Sie sie in zwei oder mehrere Projekte verwendet haben.

Andere Tipps

Persönlich würde ich einen Teil dieser Funktionalität in eigene Bibliotheken setzen, als „Utility“ ist ein eher subjektiver Begriff, was eine Person nützlich findet, ist zum anderen nicht so hilfreich.

Wenn in der Bibliothek es bis in der beschreibenden Namensraum gebrochen wurde, dann würde ich sagen, das ist besser (zB die Größe von Bildern in einer Art .Drawing Namespace wären, oder in einem .Drawing.dll) .

Ich habe viele Dinge in meiner Klassenbibliothek, die ich zwischen den Projekten teilen:

  • IoC-Container und Dependency Injection-Framework
  • Ein vollständiger Steuerung / Beobachter Framework ermöglicht es mir, UI-Code von backlogic Code zu trennen
  • Ein vernünftiger Datenbank-unabhängige Satz von Klassen für SQL ausgeführt wird, kümmert sich um einige der Syntax Unterschiede, vor allem Funktionsnamen
  • Viele andere Hilfsklassen und Utility-Methoden für den Umgang mit Daten
  • Einige standardisierte interne Speicherklassen, wie Tuple<..> etc.
  • Einige benutzerdefinierten Sammlungen, wie Set<T>, Heap<T>, sowie viele nützlichen Methoden für die mit verschiedenen Arten von Sammlungen zu tun

Die Klassenbibliothek hinzugefügt wird, wenn ich mehr Material benötigen.

Ich würde vorschlagen, dass anstelle einer „utility“ Bibliothek nur domänenspezifischen machen (Grafik, Authentifizierung, Validierung, etc) Bibliotheken und nur gehöre sie, wo sie gebraucht wird. Der Schlüssel ist natürlich entschieden, wie spezifisch. Weitere Besonderheit ist in der Regel besser.

Gedankenlos, wenn es keine Domain hat dann haben Sie wahrscheinlich nicht verstehen, es voll was bedeutet, dass Sie sollten neu bewerten, was Sie tun und versuchen, zuerst zu erreichen.

Beachten Sie auch, dass das, was in einem oder zwei Projekten nützlich ist, nur am Ende kann in einem oder zwei Projekten nützlich. nur verursacht Wartungsprobleme auf der Straße mehr Klassen als nötig hinzuzufügen.

Obwohl ich nur einen jungen Entwickler selbst bin ich RegEx Funktionen gefunden und SQL Filter sehr nützlich sein. Ich habe auch Replikations-Funktionalität für MSSQL Merge, die für mich bisher ganz praktisch gewesen ist.

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