it-swarm.dev

Ist das Kopieren und Einfügen schlecht?

Mit einfachen Google- und Google Code-Suchwerkzeugen ist es einfach zu finden, wie man mit einer Ressource programmiert oder bestimmte Probleme löst (z. B. das Erstellen einer Java -Klasse oder eines FTP-Blocks in Perl usw.) Entwickler sind also versucht, den Code nur zu kopieren und einzufügen (in gewisser Weise wiederzuverwenden). Ist dies eine Inkompetenz? Ich habe dies selbst getan, obwohl ich denke, ich bin ein besserer Programmierer als viele andere, die ich gesehen habe. Wer hat die Zeit, RTFM ? In Zeiten der Informationsfülle halte ich das Programmieren mit Kopieren und Einfügen nicht für schlecht.

Ist es nicht das, was Sites wie Stack Overflow sowieso tun? Die Leute fragen - OK, hier ist mein Problem - wie kann man es lösen? Jetzt wird jemand den vollständigen Code veröffentlichen und die Person, die die Frage gestellt hat, würde einfach die am häufigsten gewählte Antwort kopieren und einfügen. Egal wie klein das Problem ist.

Ich arbeite mit einigen jungen Programmierern zusammen, die sich stark auf das Internet verlassen, um ihre Arbeit zu erledigen. Ich sehe Bequemlichkeit beim Kopieren/Einfügen und Ändern von Code, um die Arbeit zu erledigen. Zum Beispiel können Sie mit Algorithmen und dergleichen ziemlich gut umgehen, aber Sie wissen möglicherweise nicht, wie man ein BufferedReader in Java - würden Sie das Javadoc) vollständig lesen? für BufferedReader oder ein Beispiel für die Verwendung irgendwo nachschlagen?

Was sind die wirklichen Gefahren der Copy & Paste-Codierung, die sich auf ihre Kompetenz auswirken können?

17
ring bearer

Ist es schlimm? Vielleicht ... um kleine Beispiele zu lernen, um ein Konzept zu testen, ist es nicht so schlimm.

ABER ... Sie müssen verstehen , was Sie kopieren/einfügen. Woher wissen Sie sonst, dass der Code wirklich funktioniert? Sicher, es wird das gewünschte Ergebnis auf dem Bildschirm angezeigt, aber möglicherweise hat es eine schreckliche Leistung, möglicherweise Sicherheitslücken, möglicherweise Speicherlecks es ruft Cthulhu herbei, vielleicht werden Kundenkreditkartennummern durchgesickert, vielleicht enthält es eine Hintertür ...

Und höchstwahrscheinlich erfordert es möglicherweise einige Anpassungen, um die Geschäftsanforderungen zu erfüllen, und wenn Sie nicht verstehen den Code, den Sie nicht richtig optimieren können (oder noch besser: schreiben Sie eine "korrektere" Version) ...

Was "RTFM" betrifft, ja, wenn es verfügbar ist. Ich würde die BufferedReader-Javadocs lesen, und wenn ich nicht genügend Informationen erhalten könnte, um meinen Code zum Laufen zu bringen, würde ich Google drücken und nach "Java BufferedReader-Beispiel" suchen. Ich würde nicht erwarten, dass der Code, den ich finde, sofort mit meinem Code funktioniert, aber ich würde erwarten, dass ich ein einfaches funktionierendes eigenständiges Beispiel finde, das ich als Beispiel verwenden kann, um meinen eigenen Code zu korrigieren.

Und wenn es Ihr eigener Code ist, den Sie kopieren/einfügen, ist dies normalerweise ein Zeichen, um mit dem Refactoring zu beginnen.

Es ist vielleicht die schlechteste Art zu programmieren.

ist das eine Inkompetenz?

Ja. Wenn jemand es nicht gut genug verstehen kann, um es selbst zu schreiben, muss er wirklich einen neuen Job finden, bei dem nicht erwartet wird, dass er programmiert.

Noch wichtiger ist, wenn jemand den Unit-Testfall schreiben kann, muss er in der Lage sein, den Code zu schreiben. Oder beweisen Sie, dass das Problem nicht in angemessener Zeit gelöst werden kann. Wenn es technologische Probleme gibt, ist Schulung unerlässlich. Wenn es Algorithmusprobleme gibt, ist auch Training wichtig.

Wer hat die Zeit für RTFM?

Jeder.

Ist das nicht das, was Sites wie Stack Overflow sowieso tun?

Nein.

die Person, die die Frage gestellt hat, kopiert einfach die am häufigsten gewählte Antwort.

Der am häufigsten gewählte Code funktioniert möglicherweise nicht wie erwartet. Es kann nicht optimal sein. Randbedingungen oder Sonderfälle werden möglicherweise nicht richtig behandelt. In der Tat funktioniert es möglicherweise nicht einmal für die Architektur des Fragestellers, obwohl es für die antwortende Person funktioniert hat.


würden Sie das vollständige Javadoc für BufferedReader lesen oder ein Beispiel für die Verwendung irgendwo suchen?)

Lesen Sie den gesamten Javadoc. Immer.

Was sind die wirklichen Gefahren der Copy-Paste-Codierung, die sich auf ihre Kompetenz auswirken können?

Regel 1: Software ist nur verschlüsseltes Wissen.

Wenn hinter der Software kein Wissen steckt, scheint zufälliger Müll für einige Beispiele zu funktionieren. Darin liegt kein Wert.

16
S.Lott

Es ist eigentlich eine gute Idee zu wissen, was Ihr Code tut. Ich würde empfehlen, Code Complete zu lesen

Steve McConnells Original CODE COMPLETE gilt als einer der besten praktischen Anleitungen für die Programmierung und hilft Entwicklern seit mehr als einem Jahrzehnt, bessere Software zu schreiben. Jetzt wurde dieses klassische Buch vollständig aktualisiert und mit modernsten Methoden - und Hunderten neuer Codebeispiele - überarbeitet, die die Kunst und Wissenschaft der Softwarekonstruktion veranschaulichen. McConnell erfasst das Wissen aus Forschung, Wissenschaft und alltäglicher Geschäftspraxis und fasst die effektivsten Techniken und Grundsätze zu klaren, pragmatischen Leitlinien zusammen. Unabhängig von Ihrer Erfahrung, Ihrer Entwicklungsumgebung oder Ihrer Projektgröße wird dieses Buch Ihr Denken informieren und anregen - und Ihnen dabei helfen, Code von höchster Qualität zu erstellen.

Entdecken Sie die zeitlosen Techniken und Strategien, die Ihnen helfen:

  • Design für minimale Komplexität und maximale Kreativität
  • Nutzen Sie die Vorteile der kollaborativen Entwicklung
  • Wenden Sie defensive Programmiertechniken an, um Fehler zu reduzieren und auszuspülen
  • Nutzen Sie die Möglichkeiten, Code neu zu gestalten oder weiterzuentwickeln, und tun Sie dies sicher
  • Verwenden Sie Konstruktionsmethoden, die für Ihr Projekt das richtige Gewicht haben
  • Debuggen Sie Probleme schnell und effektiv
  • Beheben Sie kritische Konstruktionsprobleme frühzeitig und korrekt
  • Bauen Sie Qualität in den Anfang, die Mitte und das Ende Ihres Projekts ein ...
14
Tom Squires

Wenn wir von Copy-Paste-Programmierung als einer schlechten Praxis sprechen, meinen wir die Copy-Paste-Programmierung, die aus Faulheit erfolgt. Anstatt eine richtige Basisklasse zu programmieren, um den Codegeruch zu beseitigen, verletzen einige einfach TROCKEN aus Faulheit. Außerdem führt es zu vielen Fehlern, da Sie dann die subtilen Unterschiede des Anwendungsfalls ignorieren und die erforderlichen Änderungen nicht anwenden. Das ist meistens der Grund, warum es als schlechte Praxis angesehen wird.

Ich denke nicht, dass es im Allgemeinen eine schlechte Praxis ist, hier und da einen Code aus dem Internet zu nehmen. Aber ich denke, es ist eine schlechte Praxis, wenn Sie einen Code nehmen, den Sie nicht verstehen, wenn Sie Code in Ihre Software einführen, den niemand warten kann.

Schauen Sie sich außerdem Websites wie The Code Project an. Jeder Artikel bietet eine Lösung für ein Problem. Die meisten Lösungen sind recht gut. Aber wenn ich die Implementierung überprüfe, möchte ich mich bei jeder Sekunde oder jedem Drittel übergeben, und ich würde nicht zulassen, dass ein solcher Code in meiner Software erscheint.

7
Falcon
  • Jeder gute Fachmann auf einem Gebiet kopiert, was von anderen auf diesem Gebiet geschaffen wurde.
  • Warum sollte ich das Rad selbst neu erfinden, wenn es eines gibt, das bereits meinen Bedürfnissen entspricht?
  • Die Wiederverwendung von Code ist der heilige Gral. Wir verwenden Bibliotheken, Komponenten und Open Source-Projekte ausgiebig. Warum sollten wir dieses spezielle Formular ablehnen, wenn es gut funktioniert?
  • Patchwork-Programmierung ist ein sehr produktives Muster, insbesondere wenn kopierter Code aus einer maßgeblichen Quelle stammt oder von einer Community geprüft wurde.
  • Wenn Sie nicht gut programmieren können, können Sie den Code anderer nicht gut kopieren. Das ist eine Tatsache.
  • Hier geht es nicht darum, Code innerhalb einer Anwendung zu kopieren, was so weit wie möglich vermieden werden soll.
6
Ando

Ist es nicht das, was Sites wie Stack Overflow sowieso tun? Die Leute fragen - OK, hier ist mein Problem - wie kann man es lösen? Jetzt wird jemand den vollständigen Code veröffentlichen und die Person, die die Frage gestellt hat, würde einfach die am häufigsten gewählte Antwort kopieren und einfügen.

So sehe ich die Seite sicher nicht. Ich betrachte es als einen Ort, an dem Sie Hilfe bekommen und nicht Ihre Arbeit für Sie erledigen können.

Außerdem wissen Sie, wie oft Menschen falsche Antworten wählen? Sehr.

Alles was ich wirklich sagen kann ist: "Wow!"

4
Edward Strange

Sie können einige Probleme lösen, indem Sie es so machen. Aber nicht alle Probleme; es lohnt sich nicht sehr.

Es ist auch Plagiat.

Es ist in Ordnung, Code bis zu einem gewissen Grad wiederzuverwenden, aber stellen Sie sicher, dass Sie den Code verstehen und dass Sie nicht gegen das Urheberrecht verstoßen. Verwenden Sie für die meisten gängigen Programmieraufgaben Bibliotheken, Frameworks und Toolkits, sofern verfügbar.

3
Anto

Beim Kopieren und Einfügen von Code würde ich annehmen, dass es sich um ein Codefragment handelt, das kopiert/eingefügt wird. Code-Schnipsel dienen hauptsächlich der Demonstration der Idee oder des Algorithmus, nicht der realen Produktion, da sie möglicherweise nicht auf Ihren Kontext abgestimmt sind. Schlimmer noch, es könnte einen Fehler enthalten, da der Autor des Code-Snippets den Code selbst möglicherweise nie getestet hat.

Beispiel aus dem wirklichen Leben? Ja, es gibt viele und ich bin wie letztes Jahr auf eine gestoßen. Mein Kollege hat versucht, Base64 in iOS zu codieren/decodieren, und er hat diese Antwort erhalten

https://stackoverflow.com/a/3411653/397807

was ich später herausfand, dass es hier einen bösen Fehler gab:

char *outputBuffer = malloc(outLength);
outputBuffer[outLength] = 0;

Wenn Sie C gut kennen, können Sie den Fehler möglicherweise erkennen. Der Autor hat den Puffer nur um 1 gekürzt (dennoch hat er es geschafft, 8 Stimmen zu bekommen ..). Mein Kollege verwendet diesen Code nur naiv für Base64 und es hat gut funktioniert am meisten der Zeit. Dies bereitet dem gesamten Team enorme Kopfschmerzen, da wir noch sehr Anfänger in der iOS-Entwicklung waren und die App gerade aus dem Nichts abgestürzt ist. Jeder überprüft seinen Code immer wieder, auch ich, aber wir haben nie herausgefunden, was schief gelaufen ist. Bis eines Tages denke ich, dass der Fehler selbst entscheidet, dass er auftauchen soll. Die App stürzt selbst im Simulator ab und ich habe einen Hinweis von der Stapelverfolgung erhalten, dass sie da ist. Ich entdeckte den Fehler, reparierte ihn und schloss den Fall. Das war nach vielen Beschwerden von Endbenutzern, dass unsere App immer ohne Grund abgestürzt ist. Der Schaden wurde angerichtet.

Wo ist also der Verdienst der Geschichte, fragst du? Der Vorteil ist, dass der Codierer für jeden Code verantwortlich ist, der an die Codebasis gesendet wird, und ein schlechter Codierer kann für das gesamte Team Stundenverschwendung verursachen. Das Einfügen des Codes ist an sich keine schlechte Idee, aber viele Programmierer glauben blindlings, was das Internet sagt, und platzieren den Code dort, ohne ihn zu validieren und ohne zu verstehen, was er wirklich tut. Wenn Fehler auftauchen, ist das allerletzte, was sie denken würden, der Fehler in ihrem eingefügten Code, weil sie Internetcodes immer besser finden als er. Wenn Sie die meiste Zeit viele Programmierkollegen haben, die Pasta-Code kopieren, seien Sie gewarnt.

2
tia

Das Programm zum Kopieren und Einfügen bedeutet für mich zwei verschiedene Dinge. Zum einen fügen Sie andere Codebeispiele zusammen, um ein Programm zu erhalten. Die andere Sache ist, dass Sie eine Reihe sich wiederholender Codes ausschneiden/einfügen und sie dann leicht ändern. Ich denke, bis zu einem gewissen Grad nähen wir alle Codebeispiele zusammen, wenn nicht durch explizites Ausschneiden/Einfügen, dann durch Speicher. Beim Ausschneiden und Einfügen von sich wiederholendem Code handelt es sich um Kosten gegen Belohnung. Für eine kleine Menge Ausschneiden/Einfügen oder sogar eine große Menge, wenn Sie keine Zeit haben, es richtig zu machen, kann es sich lohnen, das Ausschneiden und Einfügen durchzuführen ... aber im Allgemeinen wird dies irgendwann mit einer großen Menge kommen zurück zu beißen.

Wir alle kopieren/fügen Programme ein. Viel Code ist Kesselplatte, ebenso wie die Algorithmen. Wenn Sie schnell sortieren, haben Sie es nicht erfunden. Höchstwahrscheinlich haben Sie eine typische Implementierung von irgendwoher auswendig gelernt, entweder eine Vorlesung oder ein Buch. Sie sind eine Art Kopier- und Einfügeprogrammierung. Manchmal können Sie ein Papier lesen, in dem ein Algorithmus vorgestellt wird, und den Algorithmus in dem Papier implementieren. Für mich ist das auch Copy Paste Programmierung. Zusätzlich sind die meisten Bibliotheken voller Beispiele. Aka öffne einen gepufferten Reader in Java BufferedReader br = neuer BufferedReader (System.out); Ich bin mir ziemlich sicher, dass ich diesen Code irgendwo gesehen habe, und wenn nicht den Code genau ... den Grundcode Struktur/Muster mit eigenen Namen ersetzt ...... .NET ist sehr gut geeignet, um Codebeispiele in der gesamten Bibliothek zu haben. Wenn ich eine Webseite öffnen möchte, suche ich in der Klasse nach, um Webanforderungen zu stellen, und dann Imitieren Sie das Codebeispiel. Manchmal kommen Sie zurück und optimieren später (z. B. müssen Sie Zeitüberschreitungen einrichten), aber im Allgemeinen gehen Sie im Grunde genommen mit gutem Beispiel voran.

Insgesamt würde ich sagen, dass die meisten Programme eine Art Kopier-/Einfügeprogramm sind. Sie beginnen mit Kernbeispielen/Algorithmen/etc. aus dem Gedächtnis, Büchern usw. entnommen und dann an Ihre Bedürfnisse angepasst. Solange du verstehst, was du zusammennähst, denke ich, ist es in Ordnung. Sie müssen nicht alles, was Sie ausschneiden und einfügen, genau verstehen, nur im Allgemeinen, was es tut und welche Funktionen es hat. Es ist wirklich so, als würde man eine Bibliothek verwenden, nur dass Sie auch den zugrunde liegenden Quellcode haben. Es lohnt sich auf jeden Fall, zu den richtigen Quellen zu wechseln. Wenn Sie eine Funktion aus dem Ausschneiden/Einfügen von Codebeispielen oder einer Bibliothek erhalten können, ist es im Allgemeinen besser, mit der Bibliothek zu arbeiten, da diese später aktualisiert werden kann.

Die zweite Sache ist nur das Ausschneiden/Einfügen Ihres eigenen Codes. Sie haben eine Menge sich wiederholenden Codes, also schneiden/einfügen und ändern. Große Mengen davon machen ein Chaos zu ändern, und es ist auch sehr langweilig und nervenaufreibend ... Manchmal ist die richtige Alternative, einen anderen Ansatz zu verwenden, aber manchmal ist Ausschneiden und Einfügen der beste Weg, um das zu tun, was Sie wollen, in welchem In diesem Fall sollten Sie einen Codegenerator erstellen, um den sich wiederholenden Code zu verarbeiten. Aber wenn es nur ein paar Zeilen oder eine einmalige Sache sind, ist es möglicherweise nicht wert. Das Ausschneiden/Einfügen von ähnlichem Code ist häufig schneller als das Erstellen einer komplexen Abstraktion oder das Erstellen eines Codegenerators. Am Ende des Tages, wenn das Ausschneiden und Einfügen Stunden spart und Sie unter der Waffe stehen, um ein Produkt herauszuholen, bevor Ihr Start in den Bauch geht, dann tun Sie es. Wenn Sie den Code nicht versenden, haben Sie schließlich keine Zukunft. Aber im Grunde genommen wird dies alles zu einer technischen Verschuldung, die später beseitigt werden sollte. Es geht darum, den Kompromiss zu verstehen, den Sie eingehen, und zu verwalten, wenn er Sie beißt. Z.B. Beeilen Sie sich, das Projekt heute zu veröffentlichen, damit Sie nicht aus dem Geschäft geraten, und beheben Sie es dann nächste Woche, wenn die Duplizierung das Hinzufügen dieser neuen Funktion zu schwierig macht .....

Insgesamt schneiden/fügen wir alle mental für Beispiele/Algorithmen ein. Und beim zweiten Typ geht es darum zu wissen, wann es angemessen ist und wann nicht ...... Wie bei jedem Tool müssen Sie die Kompromisse zwischen dem, was Sie tun, verstehen ....

2
Cervo

Das Programmieren mit Kopieren und Einfügen weist zwei Probleme auf.

  1. es gibt Bedenken hinsichtlich einer Urheberrechtsverletzung, wenn Sie zu viel davon tun.
  2. schließlich tritt ein Problem auf, das Sie mit der Copy-Paste-Programmierung nicht lösen können. In diesem Fall haben Sie nicht die erforderlichen Fähigkeiten erworben, um es selbst zu lösen.

Um kleine Probleme zu lösen, kann die Copy-Paste-Programmierung dazu beitragen, diese schnell und effizient zu lösen.

Ein letzter Hinweis: Natürlich sind wir alle von Zeit zu Zeit auf andere Menschen angewiesen, um Probleme zu lösen. Wenn Sie sich die Zeit nehmen, den angegebenen Code zu verstehen und ihn zu implementieren, haben Sie etwas gelernt und Ihr Problem gelöst.

2
Digital Powers

Meiner Meinung nach ist das Kopieren und Einfügen von Beispielen/Lösungen aus dem Web ein gültiger Ansatz. Wie alles andere kann es missbraucht werden.

Wenn Sie in einer modernen Sprache arbeiten, haben Sie eine Tonne Code kopiert, die Sie nicht vollständig verstehen (zumindest für 99%) von uns). Ich sehe den Quellcode der von mir verwendeten Klassenbibliotheken nicht routinemäßig an. Ich kenne die Details der Implementierung von Array.Sort () nicht. Ich habe null Verständnis dafür, was in die Infragistics-Steuerelemente eingeflossen ist, die ich in meinen winForms-Anwendungen verwende.

Viele Menschen haben emotionale Einwände gegen das Kopieren und Einfügen von Code aus dem Internet. aber ich verstehe nicht, warum es anders ist. Warum ist das Hinzufügen einer Funktion und das Einkapseln von Logik, die ich nicht geschrieben oder verstanden habe, schlechter als das Einfügen eines Verweises auf eine Bibliothek und das Einkapseln von Logik, die ich nicht geschrieben oder verstanden habe?

Die Leute werden sagen: "Aber, aber es könnte schlechter Code sein !" Dies gilt jedoch für jede Bibliothek, die Sie verwenden. Sicher, mit den Standardbibliotheken können Sie hoffen, dass sie gut implementiert wurden, aber das ist nicht immer der Fall. Alles andere ist nur "Zeug" im Internet. Jeder kann 'Zeug' posten. Sie können Bewertungen und Bewertungen "irgendwie" vertrauen. Bei Websites wie SO können Benutzer veröffentlichte Codefragmente genauso bewerten wie CodePlex und andere.

Als Entwickler erkennen wir möglicherweise einen Unterschied zwischen dem Aufrufen einer Bibliothek und dem von Ihnen eingefügten Code. Ihre Benutzer werden nicht. Sie werden sich nicht darum kümmern. Ich habe Stunden damit verbracht, durch alle möglichen Rahmen zu springen, weil eine Komponente eines Drittanbieters, um die wir unsere Anwendung erstellt haben, einen Speicherverlust aufwies und die App schließlich zum Absturz bringen würde. Die Tatsache, dass es sich um die Bibliothek eines anderen handelte, machte es nicht einfacher, das Problem zu beheben (tatsächlich war es wohl schwieriger, weil ich die Quelle nicht hatte).

Das Einfügen von Code ist kein Ersatz für das Wissen, wie man codiert. Zu wissen, wie man codiert, bedeutet jedoch nicht, dass Sie vorhandenen Code nicht verwenden können.

1
Rob P.

Das Problem beim direkten (und ausschließlichen) Arbeiten mit einer API-Referenz wie Javadoc besteht darin, dass häufig nicht genügend Kontext bereitgestellt wird, um einen vollständigen Workflow auszuführen. Natürlich ist es hilfreich zu verstehen, was die API kann und welche Argumente und einzelnen Methoden verfügbar sind, aber das Einfügen in eine nicht triviale reale Anwendung ist etwas anderes.

Speziell für Javadoc stelle ich fest, dass nur wenige Sun/Oracle-Javadocs über einen ausreichenden Übersichtstext verfügen, um den Kontext anzugeben (aber diese selbst bieten denselben Code zum Kopieren/Einfügen). Zum größten Teil geben selbst Sun/Oracle keinen vollständigen Kontext an, und es ist in der Tat selten, einen vollständigen und vollständig geschriebenen Javadoc von Drittanbietern zu finden.

Ich denke nicht, dass dies die Schuld von Javadoc-Autoren ist, sondern dass es häufig eine Impedanzfehlanpassung zwischen API-Methoden und übergeordneten Taskblöcken gibt.

1
G__

Sie haben erwähnt, dass alle jungen Programmierer dies tun. das sollte dir etwas sagen. Wenn ich einen Prototyp baue, mache ich das wahrscheinlich ein paar Mal, weil ich lerne/versuche zu sehen, ob etwas funktioniert. Das Problem ist, wenn Sie am Ende alles mit Strategien auf Junior-Ebene aufbauen. Sie erhalten ein "Ich habe es immer so gemacht und es hat funktioniert." Mentalität und Risiko wachsen nie daraus heraus.

Wenn Sie ein besserer Programmierer werden möchten, müssen Sie etwas Flüssigkeit entwickeln. Bis Sie das Gelernte wiederholt anwenden und anwenden, ist dies schwer zu entwickeln. Die Anzahl der Dinge, die Sie für Google benötigen, sollte abnehmen. Das Erstellen eines eigenen Referenzbereichs sollte verhindern, dass immer wieder dasselbe nachgeschlagen wird. Wenn Sie dies tun, erstellen Sie einen schwerwiegenden Verstoß gegen das Kopieren und Einfügen. Wahrscheinlich schlimmer ist das Kopieren und Einfügen Ihres eigenen Codes.

1
JeffO

Kopieren und Einfügen hat zwei Auswirkungen, die beide schlecht sein können.

Wenn Sie Code von einem Teil Ihrer eigenen Codebasis in einen anderen Teil kopieren, verstoßen Sie gegen das Prinzip der Einzelverantwortung von SOLID Code-Design; Sie haben jetzt dieselbe Codezeile an zwei Stellen in Ihrer Codebasis, und wenn sich eine dieser Codezeilen ändert, müssen Sie wahrscheinlich die andere suchen und ändern (WENN Sie sich noch daran erinnern, dass sie vorhanden ist). Sie müssen sich fragen, warum Sie den Code an zwei Stellen benötigen und ob Sie etwas tun können, um den Code an einem Ort zu speichern, während Sie ihn an zwei anderen Stellen verwenden.

Das Kopieren und Einfügen einer Codezeile ist fast immer ein Signal dafür, dass der Code stattdessen in eine Methode extrahiert oder in eine Schleife eingefügt werden soll, damit remote auf ihn zugegriffen und/oder durchlaufen werden kann.

Das Einfügen von Kopien von einer Website oder einem Blog ist an sich nicht schlecht. Es ist ein Arbeitscode, den Sie für Ihre Verwendung übernehmen, ohne das Rad neu zu erfinden. Es ist jedoch wichtig, dass Sie den Code verstehen, den Sie kopieren. Wenn Sie das Wie und Warum nicht verstehen, ist es für Sie schwierig, diesen Code zu pflegen. Auch wenn sie gut funktionieren, gibt es einige wirklich schlecht gestaltete Codefragmente, die beim Kopieren und Einfügen aufgrund ihres Layouts und ihrer Architektur zum Albtraum werden.

0
KeithS

Diese Art der Codierung heißt Cargo Cult Programming . Als Ruby on Rails Entwickler in einem sehr professionellen Unternehmen mussten wir mehrere Projekte bearbeiten, die Kunden von uns umgestalten mussten, nachdem es einem anderen Unternehmen gelungen war, sie auf diese Weise durcheinander zu bringen.

In Ruby on Rails Programmierung (oder Webprogrammierung im Allgemeinen) ist dies eine schlechte Angewohnheit, die möglicherweise durch die allgemeine Verwendung vieler Tools und Plugins verursacht und unterstützt wird Die große Menge an verfügbaren Codebeispielen und Tutorials. Sie erhalten Code, der im Kontext Ihres spezifischen Projekts keine Bedeutung hat, und Code, der auf Funktionen basiert, die Sie nicht verstehen, nicht ändern und nicht debuggen können .

Sogar Plugins, die auf diese Weise enthalten sein sollen, können fehlschlagen. (Denken Sie daran, dass eine frühe Version von Acts_as_taggable in einer Endlosschleife ausgeführt wird, wenn Sie versuchen, ein Tag zu löschen.) Im Web veröffentlichter Code wird selbst in dem Kontext, in dem er geschrieben wurde, selten getestet, weniger für Ihre speziellen Anforderungen.

Das ist eindeutig die dunkle Seite der Macht. Sie wollen das nicht in Ihrem Projekt.

0