# Library nehmen oder selber programmieren?



## OnDemand (18. Mrz 2017)

hallo zusammen,

hatte grad in einer Facebook Gruppe eine Dikussion mitgelesen. Es ging darum, eine csv/txt Datei bzw. deren Aufbau zu prüfen. 

Um zu wissen wie die erste Zeile der csv aufgebaut ist, brauch ich ein paar Zeilen Code und hab das Ergebnis. Fast alle Antworten gingen aber dahin, man muss doch eine Libary suchen weil einfacher... das bezweifeln ich aber sehr, da ich schnell einen bufferedreader schreibe, die erste Zeile lese und gut, während ich erstmal eine geeignete Libary suchen muss und mich da erstmal einlesen muss.

Was sagt ihr zu dem Thema? Es ging sogar soweit dass man scheinbar schlecht programmiert wenn man keine Library nutzt

Ab wann findet ihr macht eine Library Sinn? Für mich nur wenn sie wirklich etwas vereinfacht wie zB eine ftp Library die sehr einfach zu bedienen ist


----------



## mrBrown (18. Mrz 2017)

NicoDeluxe hat gesagt.:


> Ab wann findet ihr macht eine Library Sinn?


Dann, wenn die Library weniger Arbeit (=einbinden, testen, warten, etc) als selber schreiben macht.


----------



## Times (23. Mrz 2017)

Nun bei mir ist es so das ich immer möglichst viel selber machen möchte.

Natürlich steckt dementsprechend mehr Aufwand dahinter und es wird seine Zeit dauern bis du dort angelangt bist wo jetztige Bibliotheken bereits sind, aber.. 

Irgendwann kommst du !vielleicht! an den Punkt wo die Library irgendetwas nicht mehr macht wie sie soll, dir weitere Funktionalitäten fehlen (das passiert mir häufig) oder das die Entwicklung eingestellt wird und du dich nach etwas neuem umsehen musst, wobei letzteres eher selten vorkommt da vieles weiterhin komptaibel bleibt.. aber kommt halt nichts neues mehr :O

Nun es gibt immernoch die Möglichkeit die in der Library verwendeten Klassen zu überschreiben und diese so weiterzuführen.. aber das ist auch nicht immer gewünscht, da es das ganze nur komplizierter macht.

Andereseits gibt es auch viele Bibliotheken die man wohlmöglich für immer so verwenden kann.

Also wenn ich mir eine Library suche überlege ich zuerst was ich alles erwarte und kann dann mit und mit prüfen was geht und was nicht möglich wäre. Ebenso kann man sich kundig machen wann das letzte Update kam etc..

Aber bei mir ist es auch so das ich einige Libraries nicht mehr verwende, und dafür eigene erstellt habe, weil mir diese einfach nicht gefallen haben!


----------



## SeriousD0nkey (24. Mrz 2017)

Deswegen vielleicht nach Libraries suchen, die Open Source auf bspw. GitHub gehostet werden. Selbst wenn der ursprüngliche Entwickler nicht mehr daran arbeiten möchte oder dir fehlen Features kannst du daran weiterarbeiten oder dir das ganze Projekt sogar forken. Grundsätzlich würde ich, sowie mrBrown bereits schrieb, dann auf Libraries zurückgreifen, wenn es Aufwand gegenüber einer eigenen Implementierung spart. Wenn du nur privat ein bisschen basteln willst kannst du es natürlich auch selber implementieren (mir wäre die Zeit dafür allerdings zu schade).


----------



## Thallius (24. Mrz 2017)

SeriousD0nkey hat gesagt.:


> Deswegen vielleicht nach Libraries suchen, die Open Source auf bspw. GitHub gehostet werden. Selbst wenn der ursprüngliche Entwickler nicht mehr daran arbeiten möchte oder dir fehlen Features kannst du daran weiterarbeiten oder dir das ganze Projekt sogar forken. Grundsätzlich würde ich, sowie mrBrown bereits schrieb, dann auf Libraries zurückgreifen, wenn es Aufwand gegenüber einer eigenen Implementierung spart. Wenn du nur privat ein bisschen basteln willst kannst du es natürlich auch selber implementieren (mir wäre die Zeit dafür allerdings zu schade).



Das Problem ist, dass man den Aufwand nicht immer richtig abschätzen kann. Wenn die Library nämlich einen Bug hat oder ein weiteres Feature braucht damit es Deinen Anforderungen zu 100% entpsricht, ist dann der Aufwand sich in den fremden Code einzuarbeiten oft höher als es selbst zu machen. 

Wenn ich nach Libs suche, dann finde ich im 99% aller Fälle immer eine Lib von der ich nur 10% brauche, die aber auch nur 90% meiner Anforderungen abdeckt. Sowas dann zu benutzen kann auch sehr schnell zu einem Schuß ins eigene Knie werden...

Gruß

Claus


----------



## thecain (24. Mrz 2017)

Umgekehrt ist die Chance gross, dass man bei einer eigenen Implementierung noch viele eigene Bugs drin hat. 
Bei einem csv würde ich z.B. eher auf eine Library zurückgreifen. (Natürlich eine, die auch rege verwendet wird. Die ist dann auch getestet von vielen Usern.


----------



## Thallius (24. Mrz 2017)

thecain hat gesagt.:


> Umgekehrt ist die Chance gross, dass man bei einer eigenen Implementierung noch viele eigene Bugs drin hat.
> Bei einem csv würde ich z.B. eher auf eine Library zurückgreifen. (Natürlich eine, die auch rege verwendet wird. Die ist dann auch getestet von vielen Usern.



Kann csv eigentlich irgendwas andere als das es mit einem definierten Zeichen eine variable Anzahl von Strings trennt?

Weil noch habe ich keine Ahnung was genau ein Library dafür machen soll was ich nicht mit 3 Zeilen Code selber erreiche.

Gruß

Claus


----------



## mrBrown (24. Mrz 2017)

Thallius hat gesagt.:


> Weil noch habe ich keine Ahnung was genau ein Library dafür machen soll was ich nicht mit 3 Zeilen Code selber erreiche.


Das ganze abstrahieren, du schreibst deine Klasse, annotierst sie passend und hast in einem Rutsch aus der CSV eine Liste der entsprechenden Objekte, ähnlich ORM.

Du bekommst ja kaum das Einlesen in Strings in 3 Zeilen hin


----------



## thecain (24. Mrz 2017)

Thallius hat gesagt.:


> Kann csv eigentlich irgendwas andere als das es mit einem definierten Zeichen eine variable Anzahl von Strings trennt?


Was wenn das Trennzeichen im String vorkommt? Was wenn ein Zeilenumbruch im String ist. Was wenn das CSV "falsch" ist. usw.

+ Natürlich den von @mrBrown  erwähnten Punkt

Diese Fälle sind in einer Library hoffentlich alle abgedeckt, in 3 Zeilen sicher nicht.


----------

