Verwenden von github, um potenziellen Arbeitgebern Code zu präsentieren; Wie soll ich die Website zitieren, von der ich das Code-Snippet erhalte?

Ich beginne gerade damit, Github zu verwenden, um meinen Code potenziellen Arbeitgebern zu präsentieren. Der Hauptzweck meines Githubs besteht wirklich nur darin, Arbeitgebern meine Programmierfähigkeiten zu zeigen.

Was ist das Richtige, wenn ich einen Codeblock von einer Website wie Stackoverflow kopiere und einfüge? Soll ich eine Art Kommentar hinzufügen?

Hier ist ein Beispiel

Ich suche nach einer schnellen Möglichkeit, die Obergrenze einer ganzzahligen Division zu berechnen und eine Antwort in meinen Code zu kopieren und einzufügen und auf Github hochzuladen. Soll es etwa so aussehen?

q = (x + y - 1) / y;//taken from https://stackoverflow.com/questions/2745074/fast-ceiling-of-an-integer-division-in-c-c

Oder ich möchte eine Funktion, die Floats mit Double vergleicht

/*function found at https://stackoverflow.com/questions/17333/most-effective-way-for-float-and-double-comparison*/
bool AreSame(double a, double b)
{
    return fabs(a - b) < EPSILON;
}

Bei der Arbeit kenne ich andere Leute, die von Stack Overflow kopieren, um ein Problem zu lösen, und ich halte das nicht für unmoralisch. Aber ich fühle mich unfair, wenn ich es kopiere, es auf meinen Github stelle und es verwende, um eingestellt zu werden.

Überlegungen:

  1. Ich versuche, den Code zu verstehen, den ich kopiere.
  2. Ich kann versuchen zu verschleiern, dass ich Dinge kopiert und umbenannt habe, aber das fühlt sich für mich nicht fair an.
  3. Ich kann irgendwo erwähnen, dass ich Antworten von SO bekomme

Die obigen Beispiele sind ziemlich klein, aber ich habe größere Codesegmente gesehen, die auf anderen Seiten angeboten wurden . Ich meine, ich werde kein vollständiges Programm kopieren und es wie mein eigenes aussehen lassen, aber wo ist die Grenze von "inspiriert durch den Code eines anderen" zum Kopieren überschritten? Ich denke nicht daran, Variablen zu ändern, um es wirklich besser zu machen.

Also ich stelle 2 Fragen

  1. Wann sollte ich eine mehr oder weniger kopierte Funktion zitieren?
  2. Wie soll ich es machen?
Können Sie oben in der Datei darauf verweisen? Ich denke, das wäre besser als irgendwo im Code. Es sieht etwas chaotisch aus
Ihr Beispiel für den Vergleich von Gleitkommazahlen innerhalb einer Epsilon-Toleranz muss nicht zitiert werden. Aber ich schätze, du könntest, wenn du willst. Es würde dem, der das in Stack Overflow gepostet hat, zu viel Anerkennung zollen.
Das wird heftig diskutiert :) meta.stackexchange.com/questions/272956/…
Ich würde zögern, Ihre Stackoverflow-Fähigkeiten zu zeigen. Es gibt eine bestimmte Untergruppe von Managern, die die Verwendung von Stackoverflow verachten, da sie der Meinung sind, dass die Leute Dinge einfach kopieren und einfügen können. Ich würde stattdessen einen eigenen Antrag stellen. Etwas Einfaches mit einer gemeinsamen Aufgabe, die jeder versteht, wie der Aufbau eines Baseballteams oder das Schreiben einer schnellen API, die die Zeit zurückgibt. Das Endergebnis zeigt Ihr Wissen über Bauanwendungen und das Finden einer Lösung für eine Aufgabe.
Nicht genug für eine Antwort, aber dies ist im Doc-Block für eine Methode in einem Projekt, an dem ich gerade arbeite. * Search through an array of objects to see if a given index matches a given value * http://stackoverflow.com/questions/4742903/php-find-entry-by-object-property-from-a-array-of-objectsIch habe die Methode leicht von dem geändert, was dort ist, aber wenn ich oder ein anderer Entwickler jemals Hilfe bei dem brauche, was vor sich geht und warum Ich habe diesen Code gewählt, wir wissen, wo wir suchen müssen.
@DoyleLewis So etwas muss auch nicht zitiert werden. Ich würde auch fragen, ob es einen Kommentar braucht. Jemand, der die Sprache kennt, sollte die gebräuchlichen Redewendungen und Verwendungen der Sprache erkennen, von denen dies definitiv eine ist.
Die folgende Seite gibt eine gute Erklärung, wie Code zitiert wird, mit tatsächlichen Beispielen für Zitate, die sich in echtem Quellcode befinden: integrity.mit.edu/handbook/writing-code - Beachten Sie, dass es sich auch nicht um triviale Zitate handelt. Dies sind die Beispiele für Dinge, die wirklich zitiert werden, nicht triviales Zeug wie "abs(a + b) < eps" (das wahrscheinlich in Hunderten von Mathematiklehrbüchern vorkommt).
@Brandin Nicht, dass dies wirklich ein Ort wäre, um Codierungsstandards zu diskutieren, aber ich kommentiere jede Methode, die ich schreibe, mit Docblocks, damit jeder genau weiß, was er tut, ohne den Code zu lesen. Es sind ein paar Zeilen, natürlich können Sie den Code lesen und wissen, was er tut, aber das Lesen von 1 Satz ist für alle schneller. Und mein Kommentar sollte zeigen, dass es andere Gründe als die erforderlichen Zitate gibt, warum Sie so etwas in Ihren Code einfügen könnten.

Antworten (3)

Aus meiner Sicht ist das Kopieren von Code eine absolut gültige Sache, solange es das vorliegende Problem löst, dh wenn Sie das vorliegende Problem ändern, damit der Code passt, ist dies kein guter Ansatz. Eine Lösung zu finden, die in 5 Minuten funktioniert, ist effizienter als eine Lösung zu schreiben, die in 5 Stunden funktioniert. Solange Sie verstehen, wie der Code funktioniert (wie Sie erwähnt haben).

Es ist richtig, die Quelle anzugeben, von der Sie es kopiert haben. Wenn Sie eine Quelle verwendet, aber den Code geändert haben, sollten Sie dennoch angeben, dass Sie ihn als Inspiration verwendet haben.

Nun zum Format des Zitats. Wirklich, es spielt keine Rolle, solange Sie in Ihrem gesamten Code konsistent sind. Ein Arbeitgeber wird gerne sehen, dass Sie gründlich, ethisch und konsequent sind und einen Kodierungsstandard befolgen können. (Stellen Sie sicher, dass der kopierte Code auch in Ihren eigenen Codierungsstandard passt: Einrückung, Groß- und Kleinschreibung, Klammerpositionen, Leerzeichen usw.)

Ich habe vor einiger Zeit eine Metafrage beantwortet und eine ähnliche Frage gestellt .

Stack Overflow präsentiert Wissen. Genau wie ein Buch. Wenn Sie Wissen aus einem Buch gewinnen, müssen Sie dieses Wissen nicht zitieren. Du zitierst dein Gymnasiumbuch zum Gebrauch der englischen Sprache auch nicht mit jedem Wort, das du tippst, oder?

Wenn Sie jetzt wörtlich zitieren, brauchen Sie Zitate. Aber nur auf etwas, das tatsächlich kreativen Wert hat. Wenn ich Shakespeare zitiere, dann besser richtig. Aber jemand hat vorher "Guten Morgen" gesagt. Und ich werde seinen Namen sicher nicht jeden Morgen etwa 10-20 Mal erwähnen.

Ihre Beispiele sind Dinge, die wirklich nur Allgemeinwissen sind. Fließkommawerte vergleichen? Etwas aus zwei ganzen Zahlen berechnen? Das sind keine Dinge, die es wert sind, zugeschrieben zu werden. Das machen alle. Es ist offensichtlich, dass niemand gerade eine Programmierung implantiert hatte. Wir haben es alle irgendwo und von jemandem gelernt.

Wenn Sie tatsächlich etwas von Stack Overflow lernen (und mir ist klar, dass dies nicht jeder tut), müssen Sie es nicht wörtlich kopieren. Sie werden es an Ihre Bedürfnisse anpassen, auch wenn Ihre Bedürfnisse nur andere Variablennamen oder Klammern sind. Und wenn Sie das Gelernte anpassen, müssen Sie es niemandem zuschreiben. Es ist Ihr Produkt, auch wenn Sie Hilfe bei der Erstellung hatten. Wir alle haben Hilfe beim Erschaffen von Dingen. Niemand kann Dinge aus dem Nichts erschaffen.

Ab jetzt schreibe ich "Guten Morgen!" Ich werde einen Link zurück zu dieser Seite setzen, um alle wissen zu lassen, dass ich den Satz von der hier geposteten Idee angepasst habe. Vorgenommene Änderungen: Das erste Wort wurde groß geschrieben und ein Ausrufezeichen hinzugefügt. Datum der letzten Änderung: 24. März 2016 13:27:25 GMT.
Es verwirrt mich manchmal, dass wir geboren werden und nichts wissen, also haben wir alles, was wir wissen, irgendwo gelernt. Woher weißt du, wann du etwas zitieren sollst?
@BruceD Wenn Sie Shakespeare zitieren, müssen Sie ihn zitieren. Wenn Sie so viel Shakespeare lesen, sprechen Sie wie er, nicht wahr.
@nvoigt sagt, ich habe immer nur ein Buch mit einem Beispiel für die Implementierung einer verknüpften Liste in C gelesen. Ich studiere es gut. Die verlinkte Liste setze ich dann, ohne auf das Buch zurückzugreifen, in einem kleinen Projekt um. Soll das Buch gesitert werden?

Als professioneller Softwareentwickler gehört es dazu, Softwarelizenzen und die Wiederverwendung von Code im Griff zu haben. Wenn Sie sich an diese Regeln halten, können Sie gegenüber einem Personalchef leicht argumentieren, dass Sie die Standardverfahren befolgt haben.

Jede Website hat eine andere Lizenz, aber diese Empfehlung wird gegeben, wenn Code von Stack Overflow (oder einer beliebigen Stack Exchange-Site) abgerufen wird:

Aber um Ihre Arbeit zukunftssicher zu machen, empfehlen wir Ihnen, eines dieser beiden Dinge oder beides zu tun:

A) Fügen Sie Ihrem Code einen Kommentar hinzu, der auf den Beitrag verweist, in dem Sie ihn gefunden haben, oder

B) Halten Sie sich an das MIT, wie es normalerweise verwendet wird, indem Sie den vollständigen Lizenztext in Ihre Quelle aufnehmen

Sie machen Option A bereits, richtig? Dies ist nur ein Standardverfahren, wenn es darum geht, Code im Internet zu finden – ein Hyperlink-Kommentar stellt sicher, dass Sie später debuggen können. Aber unter den neuen Bedingungen ist ein Hyperlink-Kommentar mehr als nur pragmatisch, es ist ein Huttipp und ein Revier, das sicherstellt, dass Sie die Bedingungen eines Mitwirkenden eingehalten haben

Im Allgemeinen ist die Verwendung von Code aus dem Internet in Ordnung, aber ich würde Sie davor warnen, es zu übertreiben. Wenn jede Funktion in Ihrem Repository ein Zitat zu Stack Overflow enthält, würde ich Ihre Fähigkeit in Frage stellen, spezifischere Probleme zu lösen.