Kopieren und fügen die meisten Programmierer Code ein? [geschlossen]

48

Ich habe sehr früh gelernt, dass das Ausschneiden und Einfügen des Codes eines anderen langfristig länger dauert als das Schreiben selbst. Meiner Meinung nach wird es beim Ausschneiden und Einfügen von Code wahrscheinlich Probleme geben, die ein Albtraum sein werden, den es zu lösen gilt.

Versteht mich nicht falsch, ich meine, es ist wichtig, den Code anderer Leute zu finden und daraus zu lernen, aber wir fügen ihn nicht einfach in unsere App ein. Wir schreiben die Konzepte in unsere App um.

Aber ich höre ständig von Leuten, die schneiden und einfügen, und sie reden darüber, wie es üblich ist. Ich sehe auch Kommentare von anderen, die darauf hinweisen, dass es üblich ist.

Schneiden die meisten Programmierer Code aus und fügen ihn ein?

John MacIntyre
quelle
10
Auch wenn ich weiß, wie man etwas macht, suche ich oft nach Codebeispielen, um Best Practices zu finden. Sobald Sie den Code gelesen haben, können Sie schnell feststellen, ob das, was Sie finden, besser ist als Ihr Plan.
Nicole
In letzter Zeit gab es eine Frage zum Ausschneiden und Einfügen. Warum checkst du es nicht aus ?
Naurgul
Wenn ich es verstehe
Johnny

Antworten:

46

Zwei allgemeine Fälle:

Von einem Projekt zum anderen:

Die meisten Programmierer schneiden Code aus und fügen ihn in dieser Funktion ein. Sie können ein vorheriges Projekt oder etwas online finden und es genau kopieren / einfügen oder kopieren / einfügen und Änderungen daran vornehmen. Ich denke, diese Praxis ist in der Regel in Ordnung. Dies ist besonders gut, wenn es sich um bewährten Code handelt. (Beispiele: Eine Art Dienstprogrammobjekt aus einem früheren Projekt, das gut funktioniert hat, oder möglicherweise aus einem Blog, für das nur wenige Änderungen erforderlich sind.) Dies kann schlecht sein, wenn Sie Code kopieren, den Sie nicht verstehen, wenn der Code schlecht ist oder wenn es eine viel bessere alternative Lösung als den Code gibt, den Sie einfügen.

Innerhalb desselben Projekts: Kopieren und Einfügen in dasselbe Projekt ist normalerweise keine gute Idee. Dies ist ein übler Geruch, dass der Code, der kopiert wird, einfach irgendwo in einer Methode / Klasse sein und wiederholt aufgerufen werden sollte. Es gibt einige Ausnahmen, aber im Allgemeinen sollte der Programmierer denken: " Gibt es eine Möglichkeit, diesen Code, den ich kopiere, zu parametrisieren? ".

jzd
quelle
5
Dies gilt im Allgemeinen, es sei denn, Sie schreiben Code, für den Anti-Patterns erforderlich sind, wie dies bei Anti-Manipulations-Code der Fall sein kann, beispielsweise für die Softwarelizenzierung.
Rob Perkins
+1 Ja, ich habe beide Dinge getan. Ich habe seit langer Zeit keinen Code mehr aus demselben Projekt ausgeschnitten und eingefügt. Was die Utility-Klassen betrifft, so ist das Kopieren von Projekt zu Projekt jetzt auf das Kopieren vollständiger Dateien beschränkt.
John MacIntyre
2
Wenn ich Datenbankcode schreibe, schneide ich normalerweise einen Teil davon aus und füge ihn in eine neue Funktion ein und ändere den SQL-Code selbst, um das gewünschte Ergebnis zu erzielen. Ich muss mich nicht darum kümmern, einige der Voraussetzungen für Datenbankaufrufe erneut einzugeben. Obwohl ich im Allgemeinen mit beiden Bemerkungen einverstanden bin.
Chris
1
@Chris: Das Kopieren und Ändern des Kerns ist ganz anders als das einfache Einfügen.
Loren Pechtel
1
@Loren Pechtel: Trotzdem müssen Sie immer noch Code kopieren und einfügen.
Chris
37

Die meisten Programmierer tun es, aber das heißt nicht, dass Sie es tun sollten

Eines meiner Programmier-Mantras lautet: "Wenn ich Code kopiere und einfüge, mache ich etwas falsch" . Im Wesentlichen trocken .

Ich denke, es sollte offensichtlich sein, dass die Wiederverwendung von Code die Verwendung von Code als Ressource und nicht die Wiederholung von Code bedeutet. Manchmal habe ich meinen eigenen Code kopiert und eingefügt, in den meisten Fällen endete ich mit Kesselplattencode oder ähnlichem.

Nachdem ich etwas mehr Zeit in diesen Code investiert habe, komme ich zu folgendem Ergebnis:

  • Eine Komponente (siehe auch: Trennung von Anliegen )
  • Ich kann auf Reflexion zurückgreifen, um die Dinge in Zukunft einfacher, sauberer und einfacher nachvollziehbar zu machen.
  • Ein besseres Design , denn auch wenn es funktioniert, warum nicht noch einmal, nachdem Sie die Lektionen gelernt haben?
  • Ein Muster , das ich abstrahieren, in eine Bibliothekskomponente verwandeln und doppelten Code entfernen kann.

Es kann fraglich sein, ob wir Code kopieren und einfügen sollen oder nicht, da es dem Client / Chef egal ist (zumindest direkt und kurzfristig) und Sie möglicherweise mit den gleichen Ergebnissen enden, aber das Problem kommt wirklich, wenn es passiert führt zu Fehlern, Verlust der Modularität und letztendlich zur Wartungshölle.

Was Sie tun sollten: Refactor so schnell wie möglich

Niemand schreibt perfekten Code, auch wenn es funktioniert, auch wenn Sie nicht kopieren und einfügen, und es ist Ihr eigener Code, wenn Sie nicht ganz zufrieden sind, schreiben Sie einfach einen Hinweis in die Kommentare (zB einen Dokumentblock "@todo"), um daran zu erinnern Sie selbst, was Sie umgestalten möchten und warum ... Auch wenn Sie es nicht selbst umgestalten, kann es für den Betreuer zum Unterschied zwischen Glück und völliger Frustration werden.

Schließlich erhalten Sie am Ende einen guten Code , selbst wenn Sie ihn kopieren und einfügen.

Guter Code

über XKCD

dukeofgaming
quelle
15
Ich habe oft gesehen, wie "refactor later" zu "refactor never" wurde, oder noch schlimmer: "Ich bin so ein heißer Schuss, dass ein anderer SUCKER meinen fast, aber nicht ganz in Ordnung befindlichen Code refactoren und reparieren kann." Ich bin davon überzeugt, dass ich es von vornherein tun kann, denn sonst ist es wie morgen - es kommt nie.
quick_now
1
@quickly_now - re: "Ich bin so ein heißer Schuss, den ein anderer SUCKER überarbeiten und meinen fast, aber nicht ganz ok Code reparieren kann." Ich kann dir nicht sagen, wie sehr ich diese Idioten hasse.
John MacIntyre
Hey John. Ich höre dich. Ich habe Jahre meines Lebens damit verbracht, dieser Trottel zu sein ... habe die Hälfte des Geldes gezahlt und bis Mitternacht geschwitzt, um ein wirklich gutes Verständnis dafür zu erlangen, was los ist (und um großartige Blöcken von Mistcode zu schreiben) - während der heiße Schuss weiterging und es vermasselte etwas anderes. Seufzer.
quick_now
1
Je mehr Leute im Team sind, desto mehr "refactor later" wird "refactor never", soweit ich sehen konnte: /
wildpeaks
8

Wenn ich nicht weiterkomme und nach etwas suche, um mein Problem zu lösen, und auf einen hilfreichen Codeausschnitt stoße, der tut, was ich will, kopiere ich ihn natürlich. Manchmal ist es nur das Wesentliche. Ich ändere es dann, um meinen Bedürfnissen zu entsprechen. Dies passiert häufiger, wenn ich mich mit Dingen befasse, in denen ich kein Experte bin (derzeit Objective-C).

Ich nehme mir immer die Zeit, etwas aus dem Code zu lernen. Für mich ist es eine großartige Möglichkeit, etwas zu lernen und zu vermeiden, das Rad neu zu erfinden.

Martin Wickman
quelle
4
Ich habe immer gesagt, ein guter Entwickler ist ein fauler Entwickler. Ich erfinde das Rad nicht neu, wenn es schon jemand anders gemacht hat. Aber ich halte es klein ... Ich kopiere nie mehr als ein paar Zeilen Code und nie etwas, was ich nicht vollständig verstehe.
Morganpdx
Ich bin alles dafür, von anderen zu lernen, aber findest du das nicht, wenn du nicht nach einem bestimmten Problem suchst, ist es zeitaufwändiger, den Kopf nur um das zu wickeln, was die andere Person getan hat, als es von Grund auf neu zu tun? (Beachten Sie, ich spreche von "Code", nicht vollständigen Einheiten der Funktionalität wie Klassen, etc ...)
John MacIntyre
@ John MacIntyre Könnte sein, aber normalerweise, wenn ich ein kleines Code-Snippet einblende, erstelle ich es, bis ich damit zufrieden bin. Oft muss es ohnehin angepasst werden (in eine Funktion, allgemeiner, verbessert, optimiert usw.).
Martin Wickman
@ John: Code-Schnipsel bieten die Teile, die Ihnen zeigen, wie Sie Dinge tun. Natürlich ausschneiden und einfügen. Aber wie Martin betont - lernen Sie, was dieser Code tut. Sie werden viel mehr Zeit damit verbringen, nach einer bestimmten Methode zu suchen, deren Namen Sie nicht kennen. Wenn Sie nicht wissen, was ein Wort bedeutet; Du siehst im Wörterbuch nach. Definitionen sind 100% klar; aber wie oft siehst du dir die nutzungsbeispiele an? Codebeispiele ähneln Beispielen für die Wörterbuchnutzung. MSDN enthält nicht immer Verwendungsbeispiele oder ist häufig unvollständig.
IAbstrakter
6

Ich werde hier über das Kopieren / Einfügen von Code anderer Leute sprechen. Teile meiner eigenen Arbeit aus meiner persönlichen Bibliothek zu holen, ist faires Spiel. Ich kenne sie und verstehe sie per Definition.

Die häufigste Situation, in der ich Code ausschneide und einfüge, ist, wenn ich ein bestimmtes Problem habe und auf einen Blog-Post stoße, der das Problem löst. Meistens gebe ich die Lösung erneut in mein Projekt ein (immerhin ist sie wahrscheinlich im Stil des Blog-Autors geschrieben, wenn nichts anderes). Es ist nicht wirklich mein Code, aber ich fühle mich nicht schlecht, wenn ich ihn in diesem Szenario verwende.

Es ist etwas, das ich nicht verstehe, ganze Methoden oder Systeme in mein Projekt einzufügen, wie sie sind und es als erledigt zu bezeichnen. Neulich gab es eine Frage zu StackOverflow, die das Problem mit so etwas perfekt veranschaulichte.

Das Zusammenschustern eines Frankenstein-Monsters aus verschiedenen Codeteilen kann einfach nicht so effizient sein. Ich meine, wenn Sie sich damit auskennen, bedeutet dies, dass Sie entweder immer wieder dieselbe Lösung replizieren oder den Code anderer Leute so gut verstehen, dass die gleiche Ebene des Kopierens / Einfügens nicht mehr erforderlich sein sollte und auch Ihre Die Produktivität würde sich dadurch verbessern, dass Probleme zwischen inkompatiblen Codebeispielen nicht behoben werden müssen.

Ich persönlich habe nicht viele Programmierer getroffen, die in großem Maßstab kopieren / einfügen. Ich habe schon viele gesehen, die sich in die tiefsten und dunkelsten Winkel hineingeschrieben haben, aber das ist eine andere Geschichte. Aufgrund meiner persönlichen Anekdaten würde ich sagen, dass die meisten Programmierer nicht ganze Anwendungen kopieren / einfügen, aber es ist wirklich schwer zu sagen, sicher.

Adam Lear
quelle
1
Vielleicht kopieren / fügen viele Programmierer keinen tatsächlichen Code in großem Maßstab ein, aber sie nutzen gerne eine fertige Bibliothek (kostenlos oder anderweitig), ohne sich eine einzige Codezeile
anzusehen
1
@Stuart Stimmt, aber ich denke, der Unterschied besteht darin, dass diese Bibliothek nicht als eigene Arbeit des Programmierers beansprucht wird. Und ganz ehrlich, solange die Bibliothek funktioniert und das tut, wofür ich sie brauche, ist es mir auch nicht besonders wichtig, über ihre Quelle nachzudenken. (Angenommen, die Bibliothek wird anderweitig sorgfältig darauf überprüft, wie seriös / zuverlässig sie ist.)
Adam Lear
In
gewisser
@stuart - Ich würde keine Bibliothek in diese Diskussion einbeziehen, da es sich um eine zusammenhängende Einheit handelt ... nicht wirklich "Code verlieren", wenn Sie wissen, was ich meine.
John MacIntyre
Wenn ich über Ihre Kommentare nachdenke, muss ich mich ehrlich fragen, ob es einem Programmierer möglich ist, ein komplettes System auszuschneiden und zusammenzufügen. Ich denke, das Gewicht ihrer Hybris würde schnell zu einer Lawine führen und ihren Fortschritt zum Erliegen bringen.
John MacIntyre
4

Schlecht: Kopieren und Einfügen des gleichen Codeblocks immer und immer wieder

Wenn Sie dies bemerken, sollten Sie sich wahrscheinlich eine Sekunde Zeit nehmen, um zu überlegen, was aus dem zu kopierenden Code abstrahiert werden kann, und eine Funktion / Methode erstellen, um damit umzugehen. Hier gilt das DRY-Prinzip (Don't Repeat Yourself).

Gut: Kopieren eines Codeblocks, von dem bekannt ist, dass er funktioniert

DRY (Don't Repeat Yourself) gilt auch hier, nur in einem anderen Sinne. IE, wiederholen Sie nicht die Arbeit, die Sie bereits in der Vergangenheit erledigt haben. Wenn Sie sich die Zeit genommen haben, einen Codeabschnitt zu schreiben, debuggen und testen, funktioniert der Code nachweislich in einer Produktionscodebasis. Sie wären dumm, es nicht wiederzuverwenden.

Die meisten Leute geben dem Kopieren-Einfügen einen schlechten Ruf, weil viele Anfänger-Programmierer ihre Zeit damit verbringen, das Netz zu durchsuchen und einen Mischmasch des Codes anderer Leute zu kopieren / einzufügen, ohne zu verstehen, was es tatsächlich tut.

Es ist nicht besser, jedes Mal alles von Grund auf neu zu schreiben. Ich weiß, dass es viele puristische Programmierer der alten Schule gibt, bei denen alles von Grund auf neu geschrieben werden sollte, und ich hoffe, dass ich nicht daran gehindert bin, mit ihnen zu arbeiten. Wenn Sie über 5 Jahre Programmiererfahrung verfügen, sollten Sie über eine ziemlich umfangreiche Codebibliothek verfügen, die sich hervorragend zur Wiederverwendung eignet. Es ist eines der besten Vorteile, die ein erfahrener Programmierer mitbringen kann, da es möglicherweise viel Entwicklungszeit spart.

Wenn Sie mit Ihrem alten Code zunächst nichts anfangen können, nehmen Sie sich einen Moment Zeit, um die Kommentare zu lesen und sich erneut vertraut zu machen. Wenn deine Kommentare scheiße sind, ist das ein ganz anderes Problem.

Evan Plaice
quelle
Anstatt Code zu kopieren und einzufügen, ist es durchaus möglich, ihn wiederverwendbar zu schreiben. Verwenden Sie diese Option, anstatt sie zu kopieren und einzufügen.
Bjorn
1
@BjornTipling Ja, es ist normalerweise vorzuziehen, den Code in wiederverwendbare Funktionen zu unterteilen, es sei denn, dieser Prozess erhöht die Komplexität und der Code wird niemals wiederverwendet
Evan Plaice
Wenn Sie es kopieren und einfügen, verwenden Sie es erneut. Ich bin damit einverstanden, dass Menschen ihre Köpfe benutzen sollten und dass die Bedingungen dies rechtfertigen könnten. Ich habe festgestellt, dass ich beim Schreiben von Tests kopiere und einfüge, aber selbst dort versuche ich, wiederverwendbare Funktionen zu erstellen, aber dann gibt es zwei oder drei Zeilen, die fast gleich sind, aber ich kann es nicht genug verallgemeinern, um sie in eine zu verwandeln wiederverwendbare Funktion.
Bjorn
3

Nach 25 Jahren, in denen ich Code geschrieben habe, gab es Zeiten, in denen ich mir wünschte, ich könnte ausschneiden und einfügen, da ich keinen Zugriff auf Code hatte, den ich für einen früheren Arbeitgeber geschrieben hatte. Dies war jedoch sehr selten (und lesen Sie weiter).

Das vielleicht beste Beispiel ist ein wirklich einfacher Kommandozeilen-Parser, den ich vor Jahren für Unix-Betriebssysteme kennengelernt habe. Eine einfache Schleife, die die Argumente durchläuft und die Optionen verarbeitet. Es war unglaublich einfach und elegant, und ich habe es seitdem viele Male verwendet (eher als Muster als als buchstäbliches Ausschneiden und Einfügen). Dies ist eher die Ausnahme als die Regel.

Normalerweise ist ein einfaches Ausschneiden und Einfügen völlig ungeeignet - es ist wichtiger, das Konzept oder den Algorithmus auszuschneiden und einzufügen.

Ich bin nicht allzu stolz - ich suche gerne nach einem wirklich schnellen Paritäts- oder Hamming-Code-Überprüfungsalgorithmus oder so etwas Exotischem. Dann verbringen Sie ein paar Stunden damit, zu verstehen, ob es wirklich das superschnelle ist, wonach ich gesucht habe, oder ein naiver Haufen Müll.

Ich mache mir jedes Mal Sorgen, wenn jemand nur Code kopiert, ohne anzuhalten, um ihn zu verstehen. Sie sind entweder ein Genie (verstehen Sie es und alle seine Feinheiten auf einen Blick) oder ein Narr. Dazwischen ist nicht viel Platz. Oh, und es gibt auch nicht viele wahre Genies.

Ohne es zu verstehen, haben Sie wirklich keine Ahnung, was Sie gerade WIRKLICH getan haben, nicht nur unter den glücklichen, sondern auch unter den unglücklichen Umständen oder Eingabebedingungen. Manchmal spielt das keine Rolle, denn Sie haben Glück. Und manchmal führt dies zu lang anhaltenden Schmerzen.

schnell_nun
quelle
4
Auf der anderen Seite gibt es Programmierer, die den Code selbst schreiben und ihn immer noch nicht verstehen ...
hplbsh
3

Es gibt eine häufige Situation, in der Sie es im Grunde MÜSSEN, um produktiv zu sein.

Jede Technologie, die Ihnen unbekannt ist, ist schwer zu erlernen, es sei denn, Sie haben ein funktionierendes Beispiel. Daher kopieren Sie und fügen Sie, dass etwas, das tatsächlich läuft , und dann damit beginnen bastelt.

user1249
quelle
Korrektur: Es gibt einen tatsächlichen Glauben, bei dem Sie im Grunde glauben, dass Sie es tun MÜSSEN , um produktiv zu sein. Daher kopieren und fügen Sie Ihren Weg ein, um etwas freizugeben, das irgendwie funktioniert, und verbringen die Zeit damit, Ihren Weg zu finden, um den Schaden zu reparieren.
Newtopian
3

Als neuer Programmierer (4 Monate nach meinem ersten Job) bin ich ziemlich auf Hilfe angewiesen (egal ob von SO oder von anderen Orten). Ich lege Wert darauf, KEINEN Code blind zu kopieren und einzufügen. Selbst wenn der bereitgestellte Code das ist, was ich verwenden werde, gebe ich ihn in mein Programm ein und verbringe dann ein wenig Zeit damit, sicherzustellen, dass ich vollständig verstehe, was er tut und warum.

Ich möchte sicherstellen, dass ich ständig lerne und nicht nur ein Experte für Ausschneiden und Einfügen bin

Darren Young
quelle
1

Ich habe so viele Gefühle zu diesem Thema, und ich kann nicht ehrlich sagen, dass keines von ihnen ganz objektiv ist.

Es gibt viele Argumente für das Ausschneiden und Einfügen des Codes anderer Personen in Ihre Anwendung. Einige von ihnen können sinnvoll sein, andere nicht. Wenn Sie zum Beispiel eine Methode aus einem Blog haben, die Eingaben entgegennimmt und einen komplizierten mathematischen Algorithmus ausführt, der weit außerhalb Ihrer mathematischen Fähigkeiten liegt und ein Ergebnis ausgibt - das ist ein Argument für das Ausschneiden und Einfügen -, holen Sie sich die Erlaubnis des Autors, dessen zu verwenden Code und Kredit sie wo fällig - es ist die ehrenvolle Sache zu tun.

Es gibt Argumente, das Rad nicht neu zu erfinden - auch dies ist theoretisch sinnvoll. Aber wenn Sie sich nicht die Zeit nehmen, sich mit dem Code, den Sie ausschneiden und einfügen, vertraut zu machen, wissen Sie nicht, ob es eine bessere Möglichkeit gibt, dieses Problem zu lösen, und Sie wissen nicht, ob der Code Fehler enthält . Was ist, wenn das Rad, das Sie einfügen, kaputt ist?

Es gibt Argumente für Geschwindigkeit und Effizienz - Sie bauen eine Bibliothek mit Code anderer Leute auf, den Sie kopiert, gestohlen, plagiiert oder auf andere Weise kopiert haben. Vielleicht müssen Sie nicht einmal wissen, wie Sie eine Anwendung über Frankenstein hinaus programmieren zusammen aus wiedergewonnenen Teilen.

Es gibt Zeiten und Orte, an denen ich dieses Verhalten für völlig akzeptabel halte. Zum Hacken von schnellen Wegwerfwerkzeugen, die nicht auf Langlebigkeit ausgelegt sind, sondern um eine Aufgabe zu erledigen, gerade jetzt per Haken oder Gauner. Zum Zweck des Prototyping und des Studierens von Konzen- trationen, um in einem theoretischen Kontext zu lernen und voranzukommen, halte ich dies für ein völlig faires Spiel.

Das Ausschneiden und Einfügen von Code anderer Leute ist Plagiat - wenn Sie den Segen haben und den Code verstehen, den Sie einfügen, und der in das Konstrukt der Codierungsstandards für Ihre Anwendung passt, dann gebe ich zu, dass es fair ist.

Als professioneller Softwareentwickler werde ich dafür bezahlt, einen Standard und einen Ethikkodex einzuhalten. Ich werde nicht dafür bezahlt, das Urheberrecht anderer zu stehlen, zu plagiieren oder zu verletzen, was mein Mandant dem Risiko einer Strafverfolgung aussetzt. Abgesehen davon besteht ein sehr reales Risiko, dass beim Ausführen des ausgeschnittenen / eingefügten Codes katastrophale Nebenwirkungen auftreten.

Ich habe diese Antwort nicht auf Sie gerichtet, John. Ich weiß, dass Sie in Bezug auf Themen wie dieses sehr ethisch eingestellt sind. Das ist also nur ein allgemeiner Spruch in Richtung der eigentlichen Frage.

Nachtrag : Trotzdem halte ich das Ausschneiden und Einfügen von Code zwischen Projekten für durchaus akzeptabel - es sei denn, er wurde als Leiharbeit für eine andere Person geschrieben. In diesem Fall besitzen Sie nicht das Urheberrecht und sollten die Erlaubnis dazu einholen der Person, für die Sie es codiert haben. Ich habe festgestellt, dass es den meisten Arbeitgebern recht ist, wenn Sie Ihre eigenen Ideen für andere Kunden wiederverwenden, es sei denn, der Code ist für Proprietriefunktionskonzepte relevant.

BenAlabaster
quelle
Wie sehen Sie die Verwendung von Code aus Blog-Posts, die ein bestimmtes Problem lösen? Kopiert / fügt man den Code physisch ein, was aus Ihrer Sicht einen Verstoß gegen die Ethik darstellt, oder würde das erneute Eingeben der Lösung in Ihr Projekt in dieselbe Kategorie fallen? Beeinflusst die Größe des "geliehenen" Codes (dh ein komplettes Programm / eine Funktion im Vergleich zu einem kleinen Ausschnitt) Ihre Meinung?
Adam Lear
2
Ich glaube, wenn es in einem Blog-Post ist, dann hat der Autor vorgesehen, dass es öffentlich ist. Wenn es für Sie also nützlich ist, dann ist es ein faires Spiel. Ich bin jedoch selten auf Codeausschnitte gestoßen, die wörtlich kopiert werden konnten. Sie erfordern normalerweise ein wenig finagling.
Pemdas
Ich habe kein Problem damit, dass Code aus Tutorials oder Blogposts verwendet wird - verstehe einfach, was er bewirkt. Vermutlich, wenn es gebucht wurde, ist es verfügbar.
quick_now
"Ich habe diese Antwort nicht auf dich gerichtet, John" ... ich dachte eigentlich nicht, dass du ... nun, zumindest nicht, bis ich das trotzdem gelesen habe. LOL
John MacIntyre
Ich mag Ihre Kommentare zu Plagiaten und zum vollständigen Verständnis des Codes, aber denken Sie wirklich, dass es effizienter ist, den Code eines anderen zu kopieren / einzufügen, als ihn einfach selbst zu schreiben? Ich stelle fest, dass Sie es entweder nicht vollständig verstehen und später Probleme haben werden, ODER dass Ihre Versuche, es vollständig zu verstehen, länger dauern werden, als es selbst zu schreiben. KWIM?
John MacIntyre
0

Wenn der Code gut ist, sollte er anstelle von Kopieren und Einfügen in eine gemeinsame Bibliothek eingefügt werden. Aber die Leute können sich nicht mit Refactoring abfinden und bevorzugen es, die gleiche Funktionalität nach Kopie und Methode zu verbreiten.

Anstatt ein universelles absolutes Gesetz des Kopierens und Einfügens zu haben, sollte man sehen, wann man es benutzt.

Die Vorteile beim Kopieren und Einfügen sind: Schnelleres Arbeiten Nachteile sind: Der gleiche Code ist an mehreren Stellen verteilt, und jedes gefundene / gelöste Problem muss überall gelöst werden. Wenn anstelle des Kopierens und Einfügens eine Bibliothek als gemeinsame Bibliothek verwendet wird, wird das Update ausgeführt überall verbreiten. Für eine kleine Anfangsinvestition, eine Bibliothek zu verwenden, anstatt den gleichen Code überall zu verbreiten.

Sie können entscheiden, ob Sie zunächst ein wenig Zeit sparen möchten, im Vergleich zu viel später. Dann müssen Sie nur noch kopieren und einfügen, andernfalls überarbeiten und in eine gemeinsame Bibliothek stellen.

Arjang
quelle
Ich stimme der allgemeinen Bibliothek definitiv zu, aber sollten Sie diesen Code ausschneiden und einfügen oder ihn von Grund auf neu erstellen?
John MacIntyre
Der schnellste Weg, Code zu importieren, ist das Kopieren und Einfügen. Sie sollten den Code jedoch überprüfen und gegebenenfalls ändern, bevor Sie ihn in ein Projekt einfügen und ihn vergessen.
Arjang
0

In den meisten Fällen entspricht der Code, den Sie im Internet finden, nicht Ihren genauen Zwecken.

Ich mache viel, indem ich Code von jemandem kopiere, auf das Wesentliche reduziere und dann Code hinzufüge, bis er meinen Anforderungen entspricht. Ich werde es immer so anpassen, dass es meinen Namenskonventionen und Codierungsstilen entspricht.

Ich persönlich hasse es, wenn ich ein Tutorial lese und sie Code für einen komplizierten Fall anzeigen. Beginnen Sie mit der Essenz und zeigen Sie Bausteine, um den Code zu erweitern. Wenn ich jemals ein eigenes Blog gründe, werde ich den Leuten ein kommentiertes Codebeispiel zur Verfügung stellen, das zeigt, was ich tun möchte, wie Sie Funktionen / Sonderfälle hinzufügen können und ein voll funktionsfähiges Beispiel für die Grundfunktionen.

J. Maes
quelle
-1

Warum das Rad neu erfinden, wenn Sie verstehen, was der Code tut, die Erlaubnis haben, den Code (oder seinen offenen Code) wiederzuverwenden, und nicht unbedingt den gesamten Code benötigen, den die andere Person geschrieben hat? Ich kopiere häufig eine Algorithmusimplementierung und ändere sie an meine eigenen Bedürfnisse. Normalerweise liegt es jedoch daran, dass ich beim Ausschneiden und Einfügen nicht alles benötige, was im Beispiel enthalten ist. Das Hinzufügen einer weiteren Datei wäre also nur eine Verschwendung (oder etwas in einer Funktion). Ich bin mit jzd einverstanden, wenn Sie Ihren eigenen Code innerhalb desselben Projekts ausschneiden und einfügen, dann stimmt etwas nicht und Sie sollten wahrscheinlich einen wirtschaftlichen Weg finden, um ihn entweder zu libitieren oder die Funktion zu teilen.

verschrottet
quelle
-1

Ich finde, dass " Integrations " -Teammitglieder oder solche, die nicht so viel Erfahrung mit Code oder Programmierung haben, dazu neigen, öfter zu kopieren und einzufügen und nicht zu verstehen, was sie getan haben (um auf die in Ihrer Frage genannten Probleme einzugehen).

Ich finde auch, dass Programmierer sich oft vom Ausschneiden und Einfügen fernhalten, weil sie Code lieben und das Rad oft neu erfinden, nur weil sie es besser machen oder mehr lernen wollen.

John K
quelle
+1 für die Neuerfindung. Ich finde auch eine Menge Zeit, um Code aus dem Internet umzuschreiben, anstatt ihn zu kopieren. Ich denke, ich mache das, weil ich nicht an Fristen gebunden bin. Ich kann frei selbst lernen und ich kann lernen, was und wann ich will.