Wann verwendet ihr 3rd Party Libraries?
-
Ich hab ja jetzt schon alles gehört. Von "Was es schon gibt, soll man nicht nochmal implementieren" bis "Alles was man selber schreibt, hat man unter Kontrolle und es gibt keine Probleme, falls es eine Lib nicht mehr gibt". Wie macht ihr das? Wann verwendet ihr 3rd Party Libraries?
-
Vielleicht solltest Du dazu sagen, welche "Applikations-Ebene" Du bei Deiner Frage adressierst.
Sprichst Du von einer Lib, die z.B. Container und Algorithmen abbildet und verwaltet, oder von einer Lib, die eine Grafikbibliothek zur Darstellung von komplexen Diagrammen erlaubt?
Ich denke nämlich, daß das auch eine Rolle spielt.
-
Immer
-
Wann verwendet ihr 3rd Party Libraries?
So oft wie es geht. Wozu nochmal alles selbst schreiben (außer natürlich zu Übungszwecken)?
-
Kommt auf die Lib an. Wenn das Interface so beschissen ist, dass ich es sowieso erstmal in ein vernünftiges API kapseln muss mit dem ein normal denkender Mensch klarkommt, kann ich es auch gleich selbst machen.
Oder wenn es so lahmarschig ist, wie z.B. boost.String Algo ziehe ich auch vor es selbst zu machen.
Je nachdem, wo es benötigt wird, und wie weit es das Programm ausbremst, ziehe ich selbst eine eigene Lösung die nur 10x schneller ist einer Lib vor (z.B. eigene Lösung vs. boost::spirit)
-
Immer dann, wenn der Aufwand, Proxies für die neue API zu schreiben geringer ist, als den ganzen Krempel selbst zu entwerfen. Und das ist fast immer der Fall.
-
Ich gebe da Marcus recht. Wer bspw. auf Desktop-Anwendungsebene immer noch eine eigene Logging-Library, eine eigene Unit-Test-Library, eine eigene ORM-Library schreibt dem ist wirklich nicht mehr zu helfen. Wenn es aber Umstände erfordern oder eine Ebene gewisse Anforderungen hat ist es wohl nötig. Wenn man gerade eine eigene Komponente schreibt und soviele 3rd-Party-Libraries einsetzt, dass man beim Banana-Gorilla-Problem landet hat man auch etwas falsch gemacht.
MfG SideWinder
-
SideWinder schrieb:
Banana-Gorilla-Problem
huch?
erklärung?
-
Es gibt noch einen Grund, etwas selbst zu entwickeln, was es bereits als Library/Programm gibt... nämlich wenn diese Software sehr wichtig (="business critical") für die eigene Applikation ist und volle Kontrolle über diese Software einen Wettbewerbsvorteil darstellt, da man unabhängig ist und auf die eigenen Bedürfnisse schnell reagieren kann.
Bei sowas würde ich mich nur äußerst ungern auf externe Libs verlassen.
-
Für viele alltägliche Dinge benutze ich Bibliotheken wie Boost, die einem einiges an Arbeit abnehmen. Gewisse Funktionalität, für die man nirgends sinnvolle Implementierungen findet (z.B. kopierende Smart-Pointer) oder bei welchen vorhandene Lösungen meiner Meinung nach overengineered/seltsam designed/... sind, habe ich auch selbst umgesetzt.
-
Immer wenn möglich (und das ist es fast immer).
-
hustbaer schrieb:
SideWinder schrieb:
Banana-Gorilla-Problem
huch?
erklärung?Du findest eine tolle Logging-Library und plötzlich verlangt die 12 weitere Abhängigkeiten die dein 300KB-Projekt auf 10MB aufblasen. Banane -> ganzer Gorilla hängt dran. Metapher findet sich oftmals in einschlägiger Literatur.
Gutes Beispiel: Wegen BOOST_STATIC_ASSERT in einer Logging-Library musst du plötzlich Boost ebenfalls installieren/nutzen/mitlinken/wasauchimmer.
MfG SideWinder