Insgesamt bin ich nun seit ungefähr 8 Jahren in der Programmierung und es scheint mir, dass ich mich immer mehr auf Open-Source-Bibliotheken und -Schnipsel verlasse (verdammt noch mal, GitHub!), Um "die Arbeit zu erledigen". Ich weiß, dass ich mit der Zeit eine eigene Implementierung schreiben könnte, aber ich konzentriere mich gerne auf das Gesamtdesign.
Ist das normal (keine Unternehmensumgebung)? Was könnte schief gehen, wenn meine "Programmierung" nichts anderes ist, als verschiedene Bibliotheken zusammenzukleben?
Ich weiß über "erfinde das Rad nicht neu" Bescheid, aber was passiert, wenn du kein einziges Rad mehr erfindest?
programming-practices
libraries
code-reuse
Henrik P. Hessel
quelle
quelle
Antworten:
Bibliotheken nutzen, anstatt das Rad neu zu erfinden: Großartig! So sollte es jeder machen. Sie werden nicht dafür bezahlt, das zu tun, was Sie bereits getan haben.
Verwenden von Snippets: Solange Sie verstehen, was Sie kopieren und einfügen, und solange Sie die Zeit investieren, um alles konsistent zu machen (anstelle eines Patchworks aus verschiedenen Stilen und Ansätzen), ist daran nichts auszusetzen.
quelle
quelle
Good artists copy, Great artists steal
.Codierung ist in der Tat die niedrigste Programmierebene. Je höher die Abstraktionsebene ist, desto besser sind Sie Programmierer. Die Auswahl der richtigen Bibliotheken (nicht notwendigerweise Open-Source-Bibliotheken), die ordnungsgemäße Verknüpfung der Bibliotheken und die Pflege des Konstrukts sind viel schwieriger, aber effizienter und zeit- und kosteneffizienter als das Schreiben aller Daten selbst.
quelle
Ich liebe es, meine eigenen Bibliotheken zu schreiben. Ich liebe es auch, meine Projekte pünktlich fertig zu stellen. Ich denke, im Laufe der Zeit bauen die meisten guten Programmierer eine Sammlung nützlicher und wiederverwendbarer Teile auf. Ich weiß nichts über dich, aber ich habe jedes Mal ein gutes Gefühl, wenn ich eine Bibliothek benutze, die ich vor fünf Jahren geschrieben habe.
Es ist absolut nichts falsch daran, Bibliothekscode zu verwenden, der im Laufe der Zeit getestet und geliebt wurde. Sie wissen, wie es funktioniert, können sich auf seine Komplexität verlassen und es schnell umsetzen.
Davon abgesehen gehe ich davon aus, dass Sie den Code in der Bibliothek verstehen. Ich gehe davon aus, dass Sie, wenn Sie genügend Zeit haben, etwas von ähnlicher Qualität implementieren könnten.
Ich kenne einige wirklich gute C-Programmierer, die die Standard-C-Bibliothek implementieren könnten , von denen einige nur eine Lern- / Schärfungsübung haben. Der größte Spaß, den ich in meiner Freizeit hatte, war die Arbeit an der C-Bibliothek in HelenOS.
Es ist also nichts Falsches an der Verwendung von Bibliothekscode, solange Sie weiterhin neugierig sind und lernen. Es versteht sich von selbst, dass Sie keinen Code verwenden sollten, den Sie nicht verstehen, es sei denn, Sie versuchen zu verstehen, wie er funktioniert.
quelle
Ich werde in dieser Frage besser vorgehen als einige andere: Ich glaube nicht einmal, dass der "Client" -Entwickler einer Bibliothek den Code in dieser Bibliothek "verstehen" muss.
Ich bin ein (im Vergleich zu einigen) relativ neuer iPhone-Entwickler. Es gibt VIELE Bibliotheken, die ich jeden Tag benutze und die ich selbst niemals hätte erstellen können, und deren Code weit über meinem Kopf liegt. Es spielt keine Rolle im Geringsten BEREITGESTELLT:
1) Ich verstehe die Schnittstelle zu diesen Bibliotheken voll und ganz (ich bin ein ASIHTTPRequest-Ninja!)
2) Ich wähle Bibliotheken aus, die im Allgemeinen weit verbreitet sind, sodass ich sicher sein kann, dass sie gut durchgesehen und auf Probleme untersucht wurden (zB: ASIHTTP, Stig Brautaset JSON - Bibliothek, Facebook obj-c - Bibliothek, etc.)
3) Failing # 2, dann ist es einfach genug , dass ich konnte mich durch sie wählen und finden / fix / fertigen alles , dass Bedürfnisse zu finden / Fixier / Customizing .
Ich wette, dass # 2 der umstrittene Teil davon sein wird. Tatsache ist, ich verlasse mich auf die Open Source Community, eine Community von Entwicklern, die sicherlich erfahrener und mit größerer Wahrscheinlichkeit schlauer ist als ich. Aber genau darum geht es bei Open Source. Hier bitteschön.
quelle
Ich möchte eine Warnung für die Verwendung von Bibliotheken einreichen. Als häufiger Benutzer von wissenschaftlichen Bibliotheken in Perl an R (und einigen in Java) musste ich mich oft in eine Bibliothek hacken, um hässliche Gemeinkosten zu vermeiden. Die Verwendung von Bibliotheken ist großartig, aber immer mehr Bibliotheken sind selbst von anderen Bibliotheken abhängig, was eine dritte Bibliothek aufruft, die die Standardbibliothek verwendet, um eine ziemlich häufige Aufgabe zu erledigen. Und jeder Schritt im Prozess erfordert einige Überprüfungen der Eingabe und Ausgabe. Viele dieser Überprüfungen sind völlig überflüssig, belasten jedoch die Anwendung. Und wenn es in einer Schleife verwendet wird, kann es anfangen, ziemlich schwer zu wiegen.
Darüber hinaus können Sie nicht sicher sein, dass Bibliotheken immer kompatibel zu früheren Versionen sind oder keine Fehler enthalten. Tatsächlich enthalten alle Bibliotheken einige Fehler, das ist die Natur des Codes. Je abhängiger Sie von Bibliotheken sind, desto mehr potenzielle Fehler geben Sie in Ihren Code ein. Und diese Fehler können Sie nicht so einfach selbst beheben, ohne sich erneut in die Bibliotheken zu hacken.
Die Verwendung von Bibliotheken ist eine sehr kluge Entscheidung, aber genau dann, wenn Sie die Bibliotheken und ihr Verhalten gut kennen.
Ich weiß, ich denke, Verletzungen und Computer sind billig, aber immer noch. Nicht zu denken kann mehr schaden.
quelle
Normalerweise ist das Kopieren großer Mengen an Quellcode eine schlechte Praxis. Wenn der Code für eine andere Anwendung in Ihrem Unternehmen entwickelt wurde, sollten Sie ihn wiederverwenden, indem Sie ihn in eine Bibliothek extrahieren , die von beiden Anwendungen verwendet wird. Sie sollten den Code nicht kopieren. Durch Kopieren des Codes werden Sie gezwungen, zwei Kopien anstelle einer gemeinsamen Kopie zu führen.
quelle
Die Wiederverwendung von Code ist eine sehr gute Idee. Es reduziert die Redundanz und fördert die Wartbarkeit.
Der Titel weist darauf hin, dass Sie den Code als Bibliothek verwenden, der Text Ihrer Frage impliziert jedoch, dass Sie den Quellcode möglicherweise in ein neues Projekt kopieren. Ich würde so oft wie möglich den Code anderer Entwickler als Bibliothek verwenden.
Es liegt ein Problem vor, wenn der Code fehlerhaft oder irgendwie kaputt ist oder auf einem Modell basiert, das nicht sehr gut zu Ihrer Anwendung passt. In diesem Fall ist es möglicherweise einfacher, den Code ganz oder teilweise zu entfernen und von vorne zu beginnen, als zu versuchen, zu verstehen, warum er auf eine bestimmte Weise geschrieben wurde. Bewahren Sie den anderen Code als Referenz auf. Möglicherweise stoßen Sie auf ein Problem, dessen Lösung Sie nicht genau wissen. Wahrscheinlich ist der andere Entwickler auf dasselbe Problem gestoßen, und es lohnt sich zu sehen, wie sie es gelöst haben.
quelle
Das ist im Allgemeinen eine gute Idee, solange keine rechtlichen Probleme bestehen.
Nehmen Sie sich jedoch die Zeit, um zu verstehen, was die Bibliothek tut und wie sie es tut. Die Verwendung einer "magischen" Bibliothek, um sich um Dinge zu kümmern, die Sie nicht verstehen, ist eine gute Möglichkeit, einen Teil davon in die Luft zu jagen, weil Sie es falsch angewendet haben, und dann haben Sie keine Ahnung, wie Sie es beheben können.
quelle
Die rechtliche Wiederverwendung von Code hat fast keine Nachteile und zwei große Vorteile:
quelle
Wenn Sie Bibliotheken und Codefragmente an geeigneten Stellen verwenden, bedeutet "Nein" nicht, dass Sie ein schlechter Programmierer sind. Es bedeutet, dass Sie ein kluger Programmierer sind, der die Weisheit anderer an geeigneten Stellen anwenden kann.
Jedoch...
Es braucht Zeit , zu finden Bibliotheken und Code - Snippets, also wenn Sie nicht schreiben können Code auf eigene Faust, und Sie müssen Stunden verbringen Bibliotheken und Code - Schnipsel finden triviale Aufgaben zu implementieren, dann ‚Ja‘ , sind Sie ein schlechter Programmierer.
quelle
Nein. Programmierer sollten Bibliotheken verwenden, die es bereits gibt. Das Rad nicht neu erfinden. Wenn Sie eine bessere Methode haben, können Sie sich dafür entscheiden, was Sie sonst wirklich tun, wenn Sie den gleichen Code schreiben. Das einzige, was Sie wissen sollten, ist, was der Code ist (und nur, wenn es darauf ankommt).
quelle
Zusätzlich zu den Gründen in den anderen Antworten kann die Nichtverwendung des Codes (sofern er für Ihr Problem gut geeignet ist) als unethisch angesehen werden, weil:
Denken Sie daran, beide sind im Voraus schwer zu bestimmen.
Schauen Sie sich auch Not Invented Here an , das allgemein als Anit-Pattern bezeichnet wird.
quelle
Erlauben Sie zum Abschluss ein Gegenargument: http://web.archive.org/web/20150326134617/https://michaelochurch.wordpress.com/2015/03/25/never-invent-here-the-even-worse -geschwister-von-hier-nicht-erfunden /
Es gibt immer ein Gleichgewicht.
quelle
Ich benutze keine Bibliotheken, es sei denn, dies ist absolut notwendig. Abhängigkeiten begrenzen die Portabilität und Lebensdauer. Ich habe 34 Jahre Erfahrung in der Softwareentwicklung und möchte, dass mindestens eines meiner Programme länger als 3 Jahre läuft, ohne durch Erosion (Veränderung) zerstört zu werden.
COM (Component Object Model), die Antwort vor 17 Jahren, theoretisch großartig, in der Praxis fragwürdig, wiederverwendbare Komponenten nicht wirklich, ich werde nur die sehr grundlegenden Komponenten verwenden und nur, wenn ich muss.
APIs und SDKs verwenden nicht viel. Wenn ich die Anzahl der Codezeilen, die ich tatsächlich aus einer Bibliothek verwende, aufspalte, die Zeit, die ich damit verbringe, sie zum Arbeiten zu bringen, im Gegensatz zum Schreiben, denke ich, dass es eine Wäsche ist. Ich habe die Verwendung von SDKs komplett eingestellt, der Overhead ist extrem.
Frameworks: Zend, Silverlight, WCF, .NET, die geschichteten Systeme, ja, sie können die anfängliche Entwicklung beschleunigen, aber wenn ich an ihre Grenzen stoße, lohnt sich die Zeit, die ich für die Behebung der Risse aufgewendet habe, einfach nicht. Wie alt sind sie und sind sie unempfindlich gegen Erosion?
Ich bin nur mit meinen Bibliotheken zu JavaScript und HTML gegangen. Ich habe JavaScript reduziert, indem ich nur die gebräuchlichsten Anweisungstypen verwendet habe. Ich hoffe, dass ich in 10 Jahren etwas schreiben kann, das Bestand hat.
quelle
Es hängt alles ab. Wenn Sie ein Spiel programmieren, ist es unumgänglich, eine Bibliothek (z. B. Allegro) zu verwenden, aber Sie können nicht wirklich als Programmierer betrachtet werden, wenn Sie den Code anderer Leute kopieren, stehlen oder ausleihen. Ich sage, das Rad nicht neu zu erfinden, sondern zu einem vernünftigen Punkt. Machen Sie nicht Ihr gesamtes Programm aus Ausschnitten, die andere Leute geschrieben haben. Setzen Sie sich an Ihren Computer und machen Sie es selbst ... hören Sie auf, Code zu stehlen. Die Leute sind heutzutage zu faul geworden und kopieren und fügen sie einfach ein.
quelle