Was ist eine gute und präzise Möglichkeit, Nicht-Programmierern die Gefahren des Copy-Paste-Programmierens zu erklären? [geschlossen]

27

Ich suche nach einer guten Analogie oder Metapher, die die Probleme des Copy-Paste-Programmierens für Nicht-Programmierer veranschaulichen könnte. Ich führe gelegentlich Code- / Systemüberprüfungen für potenzielle Kunden durch, und eines der häufigsten Probleme, das ich sehe, sind große Mengen an Code, der durch Kopieren und Einfügen in die gesamte Codebasis eingefügt wird. Dies ist etwas, das ich regelmäßig in den Reviews erwähne, und jedes Mal muss ich erklären, warum dies ein Problem ist (dies ist besonders schwierig bei Kunden, die gerade genug Programmierkenntnisse haben, um zu verstehen, dass Wiederverwendung eine gute Sache ist, aber nicht genug, um zu verstehen, warum Kopieren-Einfügen ist keine gute Form der Wiederverwendung. Natürlich kann (und kann) ich das Problem in Bezug auf die Codewartung erklären, aber es wäre schön, eine gute, prägnante Analogie für dieses Problem zu haben, die sich bei Nicht-Programmierern durchsetzt. Bonus, wenn die Analogie zeigt, warum Suchen und Ersetzen keine effektive Lösung für dieses Problem ist. Irgendwelche Vorschläge?

Nur zur Verdeutlichung (basierend auf Jaroslavs Antwort unten): Ich spreche hier nicht von der Verwendung von Code-Snippets. Was ich sehe (beunruhigend oft), ist das Kopieren und Einfügen riesiger Codeschwaden oder eines zehnzeiligen Codes, um einige Benutzerdaten (einschließlich einer Inline-SQL-Abfrage) in Dutzende von PHP- oder ASP.NET-Seiten einzufügen. Kopieren Sie also Code von einer anderen Stelle im selben Projekt.

Update: Hier gibt es einige wirklich gute Antworten; Ich habe in den Kommentaren erklärt, warum ich die Antwort von Scott Whitlock gewählt habe, aber ich würde die Antwort von whatsisname auch wärmstens empfehlen, wenn Sie mit Kunden zu tun haben, die mit der Herstellung überhaupt vertraut sind.

EZ Hart
quelle
Hmmm, das ist eine schwierige Frage. Es lässt sich nicht gut auf Oldtimer- / Gebäude- / Fabrik-Analogien übertragen .....
Whatsisname
3
Stellen Sie sich vor, Sie hätten Verweise auf die Republikanische und die Demokratische Partei im US-amerikanischen Common Law und würden dann eine der Parteien umbenennen, während Sie eine dritte hinzufügen ... Viele der Gesetze müssen neu geschrieben werden.
Job
Wie wäre es mit der Analogie von: Kopieren, Einfügen von Code (unsicher, schlecht strukturiert usw.), den Sie in Wikis, Foren usw. nicht verstehen, mit dem Öffnen von E-Mail-Anhängen (Viren, Spyware, Spam usw.) von Dritte?
Sakisk
@faif: Durch Kopieren eingefügter Code ist nicht unbedingt Müllcode. Es könnte ein guter Code sein, den der Typ im Büro neben dir geschrieben hat. Das Problem mit kopiertem Code ist, dass er sehr schnell zu einem unüberschaubaren Alptraum für Wartung und Fehlerbehebung wird.
Whatsisname
1
@faif: dann zappen Sie den Abschnitt in Klammern
Whatsisname

Antworten:

36

Es ist so ... Sie haben eine Uhr in Ihrem Haus. Groß! Sie wissen, wie spät es ist, aber Sie müssen immer in diesen einen Raum gehen, um ihn anzusehen.

Aber natürlich möchten Sie wissen, wie spät es ist, ohne die ganze Zeit in diesen Raum zu gehen, also kaufen Sie noch ein paar Uhren und verteilen sie in Ihrem Haus. Jede dieser Uhren ist unabhängig. Sie alle behalten ihre eigene Zeit. Das heisst:

  • Wenn sich die Zeit aufgrund der Sommerzeit ändert, müssen Sie alle ändern
  • Selbst wenn sie alle festgelegt sind, sind sie alle ein bisschen unterschiedlich und stimmen selten perfekt überein. Mit der Zeit treiben sie.

Stellen Sie sich nun dasselbe Problem in einer großen Anlage mit Dutzenden oder Hunderten von Uhren vor. Deshalb brauchen Sie so etwas wie diese vernetzte Uhr , die sich mit einer zentralen Zeitbasis synchronisiert. Auf diese Weise wird die Zeit einmal und nur einmal definiert .

Copy-Paste-Programmierung ist wie der Kauf unabhängigerer Uhren. Es skaliert nicht.

Scott Whitlock
quelle
1
Ich habe diese Antwort gewählt, weil ich denke, dass sie in den Situationen, in denen ich mich normalerweise befinde, am besten funktioniert. Die meiste Software, die ich ansehe, ist für Leute im Dienstleistungssektor bestimmt, und Analogien für die Herstellung sind für sie oft schwer zu verstehen. Aber so ziemlich jeder hat mehrere Uhren in seinem Haus. Ich mag es auch, weil ich die Tatsache nutzen kann, dass jede der Uhren in Ihrem Haus wahrscheinlich einen anderen Prozess zum Ändern der Zeit hat (und um einen anderen Betrag schnell / langsam ist), um zu erklären, warum Suchen und Ersetzen nicht möglich ist Keine Option für die Pflege von Copy-Paste-Code.
EZ Hart
38

Stellen Sie sich vor, Sie entwerfen ein Flugzeug. Sie haben einen einmotorigen Jet. Es verkauft sich gut. Jetzt werden Sie ein viermotoriges Flugzeug für Langstreckenflüge über den Ozean entwerfen.

Jetzt erstellen Sie nicht für jeden einzelnen Motor die vollständigen technischen Spezifikationen und Zeichnungen, oder? Nein, Sie verwenden an allen vier Stellen den gleichen Motor. Stellen Sie sich nun vor, Sie hätten 4 Zeichnungssätze und müssten etwas ändern. Jetzt müssen Sie es in allen vier Motorzeichnungen ändern. Was passiert, wenn Sie versehentlich vergessen haben, etwas am 4. Motor zu ändern, weil Sie Abstand hatten?

Angenommen, Sie ändern die Länge einer Schraube oder eines Rohrgewindes. Jetzt können Sie in Ihrer Datenbank mit technischen Zeichnungen nicht mehr nur suchen und ersetzen, sondern möglicherweise versehentlich die Befestigungsschrauben in den Kraftstoffpumpen ändern, weil sie zufällig dieselbe Größe haben. Oder die Hydraulikleitung, die das Heckruder antreibt, hat das gleiche Gewinde, aber jetzt ist es anders und Sie können das Heck nicht mehr antreiben.

Stellen Sie sich vor, Sie werden vom NTSB belästigt, weil Ihre Triebwerke zufällig Turbinenschaufeln werfen und explodieren, während Sie südlich von Florida fliegen. Welche Motorzeichnungen sehen Sie jetzt an? Alle von ihnen, einer von ihnen? Woher weißt du, dass alle vier gleich sind? Vielleicht werden die Korrekturen vorgenommen, aber sie gelten nur für Motor eins, weil der Typ, der die Motoren entworfen hat, vor einem Jahr in einer Reggae - Band spielte und der einzige war, der sich daran erinnerte, dass die vier Motoren in getrennten Dateien sind, und Der Typ, der die explodierende Turbine reparierte, war sein Ersatz.

Das Kopieren und Einfügen von Code erfolgt analog zu doppelten Zeichnungen von Bauteilen, unabhängig davon, ob es sich um eine Schraube oder einen Motor handelt. Sie möchten Komponenten zu grundlegenden Teilen abstrahieren, die so oft wie möglich wiederverwendet werden.

Kopieren Sie nicht die Motoren, schreiben Sie einfach den Code, mit dem die Motoren am Tragflügel befestigt werden.

Whatsisname
quelle
11
Stellen Sie sich nun vor, Sie stellen fest, dass der Motor Nummer 4 sich von den anderen drei unterscheidet. War dieser Unterschied beabsichtigt? Ist es darauf ausgelegt, einem bestimmten Drehmomentproblem entgegenzuwirken, das durch Linksabbiegen unmittelbar nach dem Start verursacht wird? Oder war es ein Fehler beim Kopieren?
David Thornley
5
Tolle Analogie ... aber wenn jemand Probleme beim Verstehen von Code zum Kopieren / Einfügen hat ... könnten Düsentriebwerke genauso schwierig sein :)
Steven Evers
Sie sollten für diese Analogie über Feststoffraketen anstelle von Düsentriebwerken sprechen. Auf diese Weise können Sie mit "Siehst du? Genau wie in der Raketenwissenschaft" abschließen.
Detly
Dies ist keine Analogie. Blaupausen sind buchstäblich Code für mechanische Artefakte.
Intuited
7

Sie müssen es in Bezug auf die gemeinsame Nutzung derselben Ressource und das Duplizieren derselben Ressource erklären.

Wäre es zum Beispiel sinnvoll, dass jedes Haus in einer Großstadt ein eigenes Kraftwerk hat, das das Haus mit Strom versorgt, oder wäre es sinnvoller, wenn sich jedes Haus das gleiche Kraftwerk teilt? Wenn mit einer bestimmten Komponente, die im Kraftwerk (in den Kraftwerken) verwendet wird, etwas schief geht und Reparaturen erforderlich sind, ist es einfacher, die Reparaturen an einem Ort durchzuführen, und jeder profitiert von diesen Reparaturen im Vergleich zu den Reparaturen an jedem Kraftwerk und nur an jedem Hausvorteile individuell.

Bernard
quelle
7

„Hey Schauen Sie alle Chirurgie etwas ist ähnlich Recht ?, so dass Sie nichts dagegen , wenn ich zufällig kopieren chirurgische Anweisung für verschiedene Verfahren aus verschiedenen Chirurgen für Ihren Betrieb?“

Dunkle Nacht
quelle
1
Groß!!! Die Operation wird mit Messern durchgeführt, oder? Lassen Sie mich mit einem Metzgermesser eine Gehirnoperation an Ihnen durchführen.
Aditya P
1
@AdityaGameProgrammer: Wenn das einzige Werkzeug, das Sie haben, ein Metzgermesser ist, sieht alles wie ein Schinken aus.
Joey Adams
6

Kopieren und Einfügen ist wie der Versuch, Teile ohne Form herzustellen.Es ist langsam und Sie erhalten eine einmalige Verwendung von jedem Teil, da Sie, sobald festgestellt wird, dass es defekt oder gebrochen ist, die Form nicht einfach reparieren können, um einen geeigneten Ersatz zu erstellen.

Bei der Suche nach einer Analogie müssen wir zunächst die Gefahren des Copy & Paste-Programmierens berücksichtigen :

  • Bugs eingeführt weil die Kopie nicht genau passt (unnötige Variablen und Codepfade werden nicht bereinigt)
  • Erhöhte Testanforderungen - Die Abstraktion macht Regressionstests überflüssig, da Sie nur das testen, was Sie geändert haben, und Sie nur die Blätter und nicht die Zweige ändern.
  • Die Vervielfältigung dupliziert alles, einschließlich Bugs. Jede Fehlerbehebung oder Funktion, die für beide Codeabschnitte gilt, kostet jetzt doppelt so viel für die Implementierung, und es besteht eine hohe Wahrscheinlichkeit, dass sie vollständig vergessen wird.
  • Suchen und Ersetzen verschlimmert das oben genannte Problem, da der duplizierte Code nicht einfach gefunden werden kann.

Die Hauptwaffe im Kampf gegen das Kopieren und Einfügen von Programmen ist die Abstraktion . Um eine gute Analogie zu finden, suchen Sie nach Beispielen für Abstraktion in der Welt um uns herum.

Die Abstraktion basiert auf der Idee, Definitionen einzurichten und diese dann bei der Ausführung zu verwenden. Wie wäre die Welt ohne Definitionen?

  • Definitionen sind ein wesentlicher Bestandteil der Rechtssprache. Stellen Sie sich einen Vertrag vor, der keine Kerndefinitionen hatte, aber bei jeder Verwendung für jeden Begriff vollständig definiert wurde.
  • Definitionen und Vorlagen werden in der Konstruktion verwendet. Ein häufiges Problem bei der Konstruktion besteht darin, dass jeder neue Schnitt auf dem letzten und nicht auf einer einzelnen Messung basiert, die zu Beginn durchgeführt wurde. Dies kann im Laufe der Zeit zu sehr unterschiedlichen Längen führen.
  • Die Unternehmensorganisation basiert auf Abstracts und Definitionen. Was wäre, wenn Ihr Unternehmen jedes Mal, wenn es expandieren musste, die neue Rolle von Grund auf neu definieren müsste? Das würde nicht funktionieren. Was ist, wenn sie sich dazu entschließen, eine ähnliche Job-Rolle auszuwählen und sie leicht an ihre Bedürfnisse anzupassen? Jeder wäre an seinem Platz eingesperrt, weil es unmöglich wäre, Ressourcen zu bewegen.

Das Kopieren hat nur dann einen Platz, wenn das zu kopierende Stück dauerhaft ist. Andernfalls wird mit jeder Kopie ein ganz neuer Zweig erstellt, der separat getestet, gewartet und aktualisiert werden muss.

Abstraktion bekämpft dies, indem sie alle Zweige zu einem Stamm zusammenbindet und Modifikationen an kleineren Zweigen oder sogar Blättern isoliert.

Nicole
quelle
2
Ich mag die Schimmelanalogie, der Rest, fürchte ich, wird bei Nicht-Tech-Anwendern nicht viel helfen.
Matthieu M.
@Matthieu - Ich weiß nicht, ob Sie sich auf die ersten Stichpunkte beziehen, aber ich habe nicht gesagt, dass dies Analogien sind. Ich habe beschrieben, was ich für den Denkprozess halte, damit ein Entwickler über gute Analogien nachdenkt.
Nicole
4

Ich denke, Sie sprechen von dupliziertem Code, nicht von kopiertem Einfügen (mit Snippets und ähnlichem).

Hier ist eine Analogie aus einem Geschichtsbuch, die es sehr gut illustriert. Vor Gutenbergs Presse saßen die Mönche und schrieben die Bücher von Hand und schrieben sie immer wieder neu. Die Bücher, die Mönche schrieben, waren oft mit Fehlern behaftet und dank Gutenberg wurde dieses Problem beseitigt.

Eine andere Analogie: Geldautomaten. Sie haben einen Geldautomaten, an dem verschiedene Karten ausgegeben werden können und der sie immer gut bedient. Durch das Duplizieren von Code werden verschiedene Geldautomaten erstellt, sodass jeder zu einem anderen wechseln muss und der Automat manchmal sogar einen BSOD ausgibt.

Es gibt einen großartigen Artikel über das Einfügen von Kopien von Jeff http://www.codinghorror.com/blog/2009/04/a-modest-proposal-for-the-copy-and-paste-school-of-code-reuse. html

PS Ich weiß, dass es vor Gutenberg eine Druckerei gab.

Marcus Maxwell
quelle
2

Ich nehme an, wir sprechen mit Nicht-Programmierern über Geschäftsleute, daher würde ich mich kurz fassen und die Realität des Geldes einbeziehen.

  1. Jede Codezeile kostet Geld (ob geschrieben oder kopiert)
  2. Jeder Fehler hat dich viel mehr gekostet als jede Zeile.
  3. Jede Codezeile fügt potenzielle Fehler hinzu
  4. Doppelter Code = doppelte Fehler
  5. Doppelte Fehler werden fast nie im selben Testzyklus gefunden.

Ausschneiden und einfügen = Geld verbrennen.

Stephen Bailey
quelle
1

Kann ich die Frage nicht beantworten, aber sagen, dass Sie hier wirklich keine Analogie benötigen? Der Versuch, die richtige Analogie für jede Entwicklungssprache oder jedes Entwicklungsmuster zu finden, erscheint pervers und ist oft kontraproduktiv. Es ist, als würde man versuchen, mit platten Füßen Yoga zu machen ...

Es gibt einige Gründe, warum das Kopieren / Einfügen zu Problemen führt. In einigen Umgebungen, in denen es früher als Leistungssteigerung galt, werden vorhandene Fehler in neu eingefügte Bereiche übertragen. In der Tat ist es jetzt langsamer es kommt auf JIT an und denken Sie wirklich, Sie sind schlauer als ein moderner Compiler?).

Es zeigt, dass der Entwickler entweder faul oder egoistisch ist oder beides. Wenn dies ein Kampf ist, den Sie im Moment in einem Team führen, müssen Sie ihn abhängig von Ihrer Position in diesem Team (Teamleiter / JNR Dev, SnR Dev, was auch immer) beheben, möglicherweise durch ein Schiedsverfahren in Ihrer Organisation.

BEARBEITEN: In Anbetracht des Kommentars unten, dass dies Code ist, der den Code eines Drittanbieters im Auftrag des Drittanbieters (oder vielleicht sogar eines Vierten) überprüft. Es gibt einige nützliche Dinge, die ich hoffentlich hinzufügen kann.

Erstens, als der Code für die dritte Partei erstellt wurde, hatten sie irgendwelche Metriken an Ort und Stelle? Zum Beispiel Codezeilen (LoC).

Ich denke immer noch, dass einiges von dem, was ich oben gesagt habe, noch zählt. Ich hätte wahrscheinlich auch fragen sollen, was das Ziel der Überprüfung war. Wenn es darum geht, ein Angebot zu erhalten, um es zu pflegen oder zu ersetzen, müssen Sie eine ganze Reihe verschiedener Fragen stellen.

Wie auch immer, Sie beurteilen die Qualität des Codes. Kopieren Sie alle Einfügungen, die unter die Kategorie "Entwickler haben ein angemessenes Verständnis für Abstraktions- und / oder Programmflusssteuerungsdesign gezeigt" fallen:

Kommentar: Entwickler konnten kein Verständnis für Abstraktion zeigen, und ihr Ansatz zur Programmflusssteuerung war fehleranfällig. Sie könnten hier "Zyklomatische Komplexität" einführen. Es ist eigentlich ganz einfach zu verstehen und auf eine Art und Weise denke ich, dass ich vielleicht eine Antwort gefunden habe: D Yay for me.

Ok Die zyklomatische Komplexität ist so. Sie haben eine Karte. Es hat Ihre Startposition und jedes mögliche Ziel. Es muss nicht viel sein. Denken Sie, Parkplatz, Café, Toilette. Die zyklomatische Komplexität ist ein Maß für die Anzahl der verschiedenen Routen, die zum Erreichen Ihrer Startposition zu einem der Ziele erforderlich sind.

Kopieren und Einfügen von Code wird wahrscheinlich die zyklomatische Komplexität erhöhen, da er wiederholte Logik enthält, die in einen eigenen benannten Block (oder eine eigene Methode) abstrahiert werden könnte.

Scheint vernünftig?

Ian
quelle
Dies ist ein Code, den andere Organisationen geschrieben haben, und der zur Überprüfung an unsere Organisation weitergeleitet wird. Es ist also kein Kampf innerhalb meiner Organisation, sondern etwas, das ich Menschen (Nicht-Programmierern) aus einer anderen Organisation verständlich machen muss.
EZ Hart
Das ist nützlich zu wissen und erleichtert es mir hoffentlich sehr, nützlich zu sein :) Ich werde eine Bearbeitung hinzufügen.
Ian
Tut mir leid, lange Bearbeitung, aber ich denke, das tldr ist Copy and Paste Code ist ein Codegeruch, der (unter anderem) auf eine Zunahme der zyklomatischen Komplexität hinweist, und die zyklomatische Komplexität lässt sich sehr einfach mit einer Metapher beschreiben, die einfach facettiert ist.
Ian
1

Nimm ein englisches Wort für etwas. Stellen Sie sich nun vor, Sie hätten jedes Mal, wenn Sie dieses Ding beschreiben wollten, die vollständige Wörterbuchdefinition anstelle nur des Wortes verwendet. Wie leicht könnten andere Sie verstehen?

Ich bilde mir ein mentales Bild von etwas, das nicht vorhanden ist oder das nicht der Fall ist (stelle es dir vor) . Einfache Willensvergangenheit. Anzeige der Futurity in Bezug auf eine vergangene Zeit. Es ist nicht einfach, auf eine Aktion in der Vergangenheit hinzuweisen, die wiederholt oder häufig stattgefunden hat (wäre) . Erfordert große körperliche oder geistige Anstrengungen, um zu erreichen oder zu verstehen oder zu ertragen (schwierig).

Es würde auch nicht schaden, ein aktuelles Vorher-Nachher-Beispiel für echten Code anzuzeigen, der überarbeitet wurde, um Duplikate zu entfernen.

Karl Bielefeldt
quelle
Ich empfehle, den zweiten Absatz zu proben, um Leslie Nielsen-Stil zu liefern :-)
Karl Bielefeldt
1

Es gibt auch Sicherheits- und Code-Integritätsbedenken.

Wie hier gezeigt , ist es möglich, schädliche Daten in Unicode-Zeichen einzubetten, die in die Zwischenablage übertragen werden.

Abhängig davon, wie Ihr Editor auf Unicode-Zeichen reagiert, kann dies zu unerwarteten Änderungen Ihres Quellcodes, unerwarteten Compiler-Ausgaben oder einigen Dingen führen, an die ich noch nicht gedacht habe.

LamonteCristo
quelle
0

Es gibt ein paar verschiedene Routen, die ich hier sehen könnte:

  1. Plagiat - Einige erinnern sich vielleicht an die Zeit in der Schule, in der der Diebstahl von geistigem Eigentum ein großes Nein ist. Das Kopieren-Einfügen-Programmieren kann genauso sein, da jemand möglicherweise die Quelle nicht versteht oder die Ursache für die Verwendung einer bestimmten Lösung, die nur blind kopiert und eingefügt wurde, ohne zu analysieren, wie gut dies funktioniert, und zu verstehen, warum dies möglicherweise der Fall ist oder nicht eine effektive Lösung für das Problem.

  2. Blinde Anweisungen befolgen - Die meisten Menschen hätten wahrscheinlich Erfahrungen damit gemacht, an einen Ort zu gelangen, an dem sie vorher noch nicht waren. Einige haben möglicherweise MapQuest oder Google Maps verwendet, um einen Ort zu finden und dann den angegebenen Anweisungen zu folgen. Es gab Geschichten von Menschen, die sich verirrten oder einfach nicht fanden, wo sie sich befanden, obwohl die Software spezifische Anweisungen gab, wie sie dorthin gelangen sollten. Dies ist die andere große Gefahr beim Kopieren und Einfügen: Es ist genau so, als hätte jemand Ihnen nur die Wegbeschreibung von A nach B gegeben, ohne dass Sie eine Karte des Gebiets sehen, die eine Reise möglicherweise etwas erschwert. Wenn das nicht schwer zu sein scheint, können Sie den Einsatz verbessern, indem Sie die Person bitten, mit einer Augenbinde von A nach B zu gelangen, damit sie sich auf andere Sinne verlassen kann, um zu bestimmen, in welche Richtung sie blicken und zu einem Ziel gelangen.

Daten, Informationen, Wissen und Weisheit sind möglicherweise ein gutes Modell, auf das verwiesen werden kann, um zu zeigen, warum Suchen und Ersetzen als Lösung nicht effektiv ist, da das Kopieren und Einfügen sehr mechanisch und ohne viel Nachdenken erfolgt, so dass die übertragenen Daten möglicherweise sind ohne das Wissen und die Weisheit, es richtig anzuwenden. Man könnte die Kernenergie betrachten, um Beispiele dafür zu finden, wie wichtig es sein kann, den Unterschied zu verstehen. Vergleichen Sie einen Atomreaktor mit einer Atombombe, um herauszufinden, ob es nicht ausreicht, genau zu wissen, was wohin geht, um die Kraft des Atoms sicher zu nutzen.

JB King
quelle
0

Stellen Sie sich vor, Sie haben Gruppenschüler und ein Regelwerk für die Schule. Anstatt die Regeln an einem gemeinsamen Ort zu veröffentlichen, müssen alle Schüler darauf verweisen, dass Sie jedem eine Kopie der Regeln aushändigen. Jedem Schüler wird gesagt, dass er seine Kopie der Regeln genau befolgen muss.

Ändern Sie nun eine der Regeln, die besagen, dass Sie im Katastrophenfall zum neuen Katastrophenschutz gehen sollten. Sie müssen zu jedem Schüler gehen und dessen Regelwerk ändern. Wenn einer der Schüler vermisst wird und ein Tornado zuschlägt, geht der Schüler zum alten Ort und stirbt an einem schrecklichen Tod.

ElGringoGrande
quelle
0

Jemand sendet Ihnen eine E-Mail mit einer angehängten Dokumentvorlage. Sie können es weiter verwenden, bis sich die Vorlage ändert. Keine Sorge, sie werden nicht vergessen, Ihnen eine aktualisierte Kopie zuzusenden.

JeffO
quelle
0

Das CoCoMo-Kostenmodell.

http://en.wikipedia.org/wiki/COCOMO

Aufwand (E) = a * (KLOC) ** b, wobei b> 1,0 ist

Dieser Exponent bedeutet, dass der Aufwand für das Erstellen / Warten / Unterstützen / Neuschreiben schneller wächst als die Anzahl der Codezeilen.

S.Lott
quelle
0

Es gibt einen weiteren wichtigen Aspekt dieser schlechten Praxis, den noch niemand in Betracht gezogen hat: Durch blindes Kopieren (vollständigen oder teilweisen) Codes von jemand anderem ( ohne deren Erlaubnis ) könnten Sie gegen das Urheberrecht verstoßen .

karlphillip
quelle
0

Die Copy-Paste-Codierung, die ich sehe, ist eine, bei der der Entwickler nicht versteht oder überlegen möchte, was er tut, und verschiedene Teile, die bereits "mehr oder weniger" das tun, was sie benötigen, zusammenkopiert und am Ende zufällig wackelt damit sie zusammenpassen.

Damit sind drei Hauptprobleme verbunden:

  1. Es führt nie zu fehlerfreiem Code. Je.
  2. Wenn sie den Code beim Schreiben nicht verstanden, konnten sie ihn beim Debuggen nie herausfinden. Nur jemand anderes kann das Chaos, das er angerichtet hat, gegen Aufpreis beseitigen.
  3. Wenn sie nicht über den Code nachdenken, den sie schreiben, vermeiden sie das Lernen. Wenn sie es vermeiden zu lernen, werden sie niemals ein guter Programmierer sein. Wenn sie niemals ein guter Programmierer sein werden, warum gehören sie dann zu Ihrem Team?
Joeri Sebrechts
quelle
0

Angenommen, Sie haben 5 Freundinnen (Sie sind ein schlauer Hund) und möchten allen eine Valentinstag-Nachricht senden. Sie tippen den ersten Buchstaben, fügen ihren Namen hinzu und erwähnen etwas Denkwürdiges, das Sie mit anderen geteilt haben. Anschließend kopieren Sie den Buchstaben viermal und fügen ihn ein. Dabei fehlt jedes Mal eine Instanz des Namens der Freundin Nr. 1 mit Kopieren und Einfügen, weil Sie einen Tippfehler gemacht haben. Jetzt sind 4 Ihrer fünf Freundinnen auf dem Weg zum Haus von Freundin # 1.

Kapitän Kenpachi
quelle