D
deek
Stammgast
- 368
Hi,
ich fand, die Diskussion, die sich hier gebildet hat sehr interessant, wollte aber nicht den Thread hijacken.
Da mich die Meinung anderer Entwickler (sowohl professionell als auch hobbymäßig[1]) sehr interessiert würde ich die gerne hier etwas weiterführen.
Mein ursprünglicher Beitrag:
Um direkt mal mit der Diskussion, die dort losging weiterzumachen:
"nie" war vielleicht wirklich etwas harsch und extrem. Es kommt immer auch darauf an, von wem die lib ist und wieviel man davon braucht. Ich bin ein Fan von kleinen spezialisierten libs, die wirklich nur eine Sache machen und diese dafür gut. Als positiv-Beispiel würde ich gerne alle libs von Square bzw. auch die privaten von Jake Wharton hervorheben. Die sind hochspezialisiert und machen das was sie sollen meistens perfekt und sind gut gepflegt. In einem solchen Fall macht es dann eben keinen Sinn das ganze neu zu implementieren (zumindest für mich). In anderen Fällen muss man sich eben wie gesagt genauer anschauen wer da was macht und ob man das selbst nich doch besser kann.
Ein anderes Thema sind da meiner Meinung nach Frameworks. Dem stehe ich inzwischen etwas kritischer gegenüber. Ich habe zum Beispiel anfangs Android Annotations verwendet, habe aber gemerkt, dass man da ziemlich dem Framework ausgeliefert ist und nicht alles so tut wie es sollte. Auch hier gibt es aber positiv-Beispiele. Das Spring-Framework für die nicht-Android Entwicklung macht da vieles richtig (aber auch nicht alles)
Um mal ein paar Beispiele zu nennen wo ich libs absolut sinnvoll finde (jetzt nur im Android Umfeld):
- Umgang mit Datenbanken. Da gibt es mit ormlite und SugarORM zwei hervorragende libs, die mir das Object-Relation Mapping abnehmen. Ich werde im Android und Java Umfeld wahrscheinlich zu 90% keine eigenen Queries mehr im Java Code stehen haben, mich mit Cursorn oder Datenbankverbindungen rumschlagen. Das Problem ist gelöst.
- Bilder laden. Das kann Picasso perfekt, ich habe mich dran versucht und es nicht besser hinbekommen.
- Rest Webservice ansprechen. retrofit liefert hier ein hervorragendes Mapping direkt auf Request und Response Objekte, warum sollte ich mich selbst mit einer HttpConnection und dem parsen von Antworten rumschlagen?
- JSON Parsing. Ich will nicht selbst mit einem JsonReader den Json Baum traversieren und mein Business Objekt füllen. Ich sage gson oder Jackson in welches Objekt das Zeug rein kommt und bin fertig. (Ausnahme: das JSON ist nicht 1:1 auf ein Objekt meiner Struktur mapbar, sondern wird dynamisch geparst, imho aber selten)
Und das sind nur ein paar Beispiele von extrem sinnvollen libs.
Und jetzt würde mich wirklich mal interessieren wie ihr das seht. Gerne dürft ihr auch schreiben was euer Background in der Entwicklung ist, damit man das etwas einordnen kann, ich fange mal an:
Habe meinen Master in Informatik gemacht und arbeite seit Ende 2011 professionell im Java und Android Umfeld. Im Android Bereich bin ich zusätzlich privat noch sehr aktiv mit aktuell einer App im Play Store (more to come) und einer lib für die Entwicklung.
--deek
PS: wurde jetzt länger als gedacht, ich hoffe jemand liest es trotzdem
[1] professionell im Sinne von "verdiene mein Geld damit", hat nichts mit dem Können oder der Erfahrung zu tun
ich fand, die Diskussion, die sich hier gebildet hat sehr interessant, wollte aber nicht den Thread hijacken.
Da mich die Meinung anderer Entwickler (sowohl professionell als auch hobbymäßig[1]) sehr interessiert würde ich die gerne hier etwas weiterführen.
Mein ursprünglicher Beitrag:
Ich weiß nicht wie das andere sehen, aber meine persönliche Meinung:
Implementiere nie etwas selbst, für das es eine library gibt, die tut was du willst. Da muss man eventuell noch etwas differenzieren, wenn die lib noch nicht lange existiert oder nicht gepflegt ist kann das anders aussehen.
Nur mal als Beispiel: In einer App, die ich bei einer früheren Firma geschrieben habe sind ungefähr 20 externe, gut gepflegt libs drin. Warum? Es macht mir selbst sehr viel weniger Aufwand und im Zweifelsfall können die Leute, die sich teilweise schon Jahre mit einer Funktion in einer lib beschäftigt haben, das einfach besser.
Ich habe anfangs ca 5 Tage in einen ImageLoader verbraten, der in Memory und auf Flash Speicher cacht und das ganze auch noch multithreaded hinbekommt. Nach den 5 Tagen gab es immer noch Probleme. Dann habe ich Picasso von Square gefunden und innerhalb von einer halben Stunde eingebaut und alles funktioniert wunderbar!
Wenn du sagst du willst es zum Üben machen, dann stürze dich lieber auf Probleme die noch keiner hübsch gelöst hat und bau selbst eine lib draus.
Um direkt mal mit der Diskussion, die dort losging weiterzumachen:
"nie" war vielleicht wirklich etwas harsch und extrem. Es kommt immer auch darauf an, von wem die lib ist und wieviel man davon braucht. Ich bin ein Fan von kleinen spezialisierten libs, die wirklich nur eine Sache machen und diese dafür gut. Als positiv-Beispiel würde ich gerne alle libs von Square bzw. auch die privaten von Jake Wharton hervorheben. Die sind hochspezialisiert und machen das was sie sollen meistens perfekt und sind gut gepflegt. In einem solchen Fall macht es dann eben keinen Sinn das ganze neu zu implementieren (zumindest für mich). In anderen Fällen muss man sich eben wie gesagt genauer anschauen wer da was macht und ob man das selbst nich doch besser kann.
Ein anderes Thema sind da meiner Meinung nach Frameworks. Dem stehe ich inzwischen etwas kritischer gegenüber. Ich habe zum Beispiel anfangs Android Annotations verwendet, habe aber gemerkt, dass man da ziemlich dem Framework ausgeliefert ist und nicht alles so tut wie es sollte. Auch hier gibt es aber positiv-Beispiele. Das Spring-Framework für die nicht-Android Entwicklung macht da vieles richtig (aber auch nicht alles)
Um mal ein paar Beispiele zu nennen wo ich libs absolut sinnvoll finde (jetzt nur im Android Umfeld):
- Umgang mit Datenbanken. Da gibt es mit ormlite und SugarORM zwei hervorragende libs, die mir das Object-Relation Mapping abnehmen. Ich werde im Android und Java Umfeld wahrscheinlich zu 90% keine eigenen Queries mehr im Java Code stehen haben, mich mit Cursorn oder Datenbankverbindungen rumschlagen. Das Problem ist gelöst.
- Bilder laden. Das kann Picasso perfekt, ich habe mich dran versucht und es nicht besser hinbekommen.
- Rest Webservice ansprechen. retrofit liefert hier ein hervorragendes Mapping direkt auf Request und Response Objekte, warum sollte ich mich selbst mit einer HttpConnection und dem parsen von Antworten rumschlagen?
- JSON Parsing. Ich will nicht selbst mit einem JsonReader den Json Baum traversieren und mein Business Objekt füllen. Ich sage gson oder Jackson in welches Objekt das Zeug rein kommt und bin fertig. (Ausnahme: das JSON ist nicht 1:1 auf ein Objekt meiner Struktur mapbar, sondern wird dynamisch geparst, imho aber selten)
Und das sind nur ein paar Beispiele von extrem sinnvollen libs.
Und jetzt würde mich wirklich mal interessieren wie ihr das seht. Gerne dürft ihr auch schreiben was euer Background in der Entwicklung ist, damit man das etwas einordnen kann, ich fange mal an:
Habe meinen Master in Informatik gemacht und arbeite seit Ende 2011 professionell im Java und Android Umfeld. Im Android Bereich bin ich zusätzlich privat noch sehr aktiv mit aktuell einer App im Play Store (more to come) und einer lib für die Entwicklung.
--deek
PS: wurde jetzt länger als gedacht, ich hoffe jemand liest es trotzdem
[1] professionell im Sinne von "verdiene mein Geld damit", hat nichts mit dem Können oder der Erfahrung zu tun