Использование github для демонстрации кода потенциальным работодателям; как я должен указать сайт, с которого я получил фрагмент кода?

Я только начинаю использовать Github, чтобы продемонстрировать свой код потенциальным работодателям. Основное использование моего Github — это просто показать работодателям мои способности кодирования.

Что правильно делать, когда я копирую и вставляю фрагмент кода с такого сайта, как stackoverflow? Должен ли я добавить какой-то комментарий?

Вот пример

Я ищу быстрый способ вычислить потолок целочисленного деления, скопировать и вставить ответ в свой код и загрузить его на Github. Должно ли это выглядеть примерно так?

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

Или мне нужна функция, которая сравнивает поплавки с двойными

/*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;
}

На работе я знаю, что другие люди копируют из Stack Overflow, чтобы решить проблему, и я не считаю это аморальным. Но я чувствую себя несправедливым, если скопирую его, выложу на свой Github и использую для получения работы.

Соображения:

  1. Я пытаюсь понять код, который копирую.
  2. Я могу попытаться скрыть, что я скопировал и переименовал вещи, но это не заставляет меня чувствовать себя справедливым.
  3. Я могу где-то упомянуть, что получаю ответы от SO

Приведенные выше примеры довольно малы, но я видел более крупные сегменты кода, предлагаемые на других сайтах . Я имею в виду, что я не собираюсь копировать полную программу и делать ее похожей на мою собственную, но где проходит грань между «вдохновленным чужим кодом» и копированием? Я не рассматриваю изменение переменных, чтобы действительно сделать его лучше.

Поэтому я задаю 2 вопроса

  1. Когда я должен цитировать функцию, которая более или менее скопирована?
  2. Как я должен это делать?
Можете ли вы дать ссылку на него в верхней части файла? Я думаю, что это было бы лучше, чем где-то в коде. Это выглядит немного грязно
Ваш пример сравнения поплавков в пределах допуска эпсиолон не нуждается в цитировании. Но я полагаю, вы могли бы, если хотите. Это дало бы слишком много уважения тому, кто опубликовал это в Stack Overflow.
Это активно обсуждается :) meta.stackexchange.com/questions/272956/…
Я бы не решился показать ваши навыки работы с stackoverflow. Есть определенная группа менеджеров, которые презирают использование stackoverflow, поскольку считают, что люди могут просто копировать и пропускать вещи. Я бы вместо этого сделал свое собственное приложение. Что-то простое с общей задачей, понятной всем, например, создание бейсбольной команды или написание быстрого API, возвращающего время. Конечным результатом является демонстрация ваших знаний о создании приложений и поиске решения задачи.
Недостаточно для ответа, но это находится в блоке документации для метода в проекте, над * 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-objectsкоторым я сейчас работаю. Я выбрал этот код, мы знаем, где искать.
@DoyleLewis Такие вещи тоже не нужно цитировать. Я бы также спросил, нуждается ли он в комментариях. Тот, кто знает язык, должен распознавать общие идиомы и использование языка, одним из которых является этот.
На следующей странице дается хорошее объяснение того, как цитировать код, с реальными примерами цитат, которые находятся в реальном исходном коде: целостность.mit.edu /handbook/writing-code. Обратите внимание, что они также не являются тривиальными цитатами. Это примеры вещей, которые действительно цитируются, а не тривиальные вещи вроде «abs(a + b) < eps» (которые, вероятно, встречаются в сотнях учебников по математике).
@Brandin Не то чтобы это действительно место для обсуждения стандартов кодирования, но я комментирую каждый метод, который я пишу, используя docblocks, чтобы все точно знали, что они делают, не читая код. Это несколько строк, очевидно, вы можете прочитать код и понять, что он делает, но чтение 1 предложения быстрее для всех. И мой комментарий должен был показать, что помимо обязательных ссылок есть и другие причины, по которым вы можете поместить что-то подобное в свой код.

Ответы (3)

С моей точки зрения, копирование кода — это совершенно правильное действие, пока оно решает проблему, т. е. если вы меняете проблему, чтобы код подходил, это не очень хороший подход. Найти решение, которое работает за 5 минут, эффективнее, чем написать решение, которое работает за 5 часов. Пока вы понимаете, как работает код (как вы упоминаете).

Ссылаясь на источник, откуда вы это скопировали, это правильно. Если вы использовали источник, но изменили код, вам все равно следует указать, что вы использовали его как источник вдохновения.

Теперь о формате цитаты. На самом деле, это не имеет значения, если вы единообразны во всем своем коде. Работодатель захочет увидеть, что вы дотошны, этичны, последовательны и можете следовать стандарту кодирования. (Убедитесь, что скопированный вами код также соответствует вашему собственному стандарту кодирования: отступы, регистр, позиции фигурных скобок, пробелы и т. д.)

Некоторое время назад я ответил на мета-вопрос, задав аналогичный вопрос.

Stack Overflow представляет знания. Как книга. Если вы получаете знания из книги, то использование этих знаний не нуждается в цитировании. Вы же не цитируете свой учебник по английскому языку для начальной школы ни одним словом, которое вы печатаете, верно?

Теперь, если вы цитируете дословно, вам нужны цитаты. Но только на том, что действительно имеет творческую ценность. Если я цитирую Шекспира, то лучше делать это правильно. Но кто-то сказал "доброе утро" первым. И я точно не буду упоминать его имя каждое утро по 10-20 раз.

Ваши примеры - это вещи, которые на самом деле просто общеизвестны. Сравнение значений с плавающей запятой? Вычислять что-то из двух целых чисел? Это не то, что стоит приписывать. Все так делают. Очевидно, что программирование просто так никому не имплантировали. Мы все узнали это где-то и от кого-то.

Если вы на самом деле узнали что-то из Stack Overflow (а я понимаю, что не все узнают), вам не нужно копировать это дословно. Вы адаптируете его к своим потребностям, даже если вам нужно просто другое имя переменной или фигурные скобки. И если вы адаптируете то, чему научились, вам не нужно приписывать это кому-то. Это ваш продукт, даже если вам помогали в его создании. Нам всем помогают создавать вещи. Никто не может создавать вещи из воздуха.

Отныне я, когда пишу "Доброе утро!" Я верну ссылку на эту страницу, чтобы все знали, что я адаптировал фразу из идеи, размещенной здесь. Внесенные изменения: первое слово написано с заглавной буквы и добавлен восклицательный знак. Дата последнего изменения: 24 марта 2016 г., 13:27:25 по Гринвичу.
Иногда меня это смущает, мы рождаемся, ничего не зная, поэтому всему, что мы знаем, мы откуда-то научились. Откуда вы знаете, когда вы должны процитировать что-то?
@BruceD Если вы цитируете Шекспира, вам нужно процитировать его. Если вы так много читаете Шекспира, что говорите, как он, то это не так.
@nvoigt говорит, что я когда-либо читал только одну книгу с примером реализации связанного списка в C. Я хорошо ее изучаю. Затем я, не обращаясь к книге, реализую связанный список в небольшом проекте. Должна ли книга размещаться на сайте?

Частью профессионального разработчика программного обеспечения является владение лицензиями на программное обеспечение и повторным использованием кода. Если вы соблюдаете эти правила, вы можете легко заявить менеджеру по найму, что вы следовали стандартной рабочей процедуре.

У каждого веб-сайта будет своя лицензия, но эта рекомендация предоставляется при извлечении кода из Stack Overflow (или любого сайта Stack Exchange):

Но чтобы подготовить вашу работу к будущему, мы рекомендуем вам сделать одну из этих двух вещей или обе:

A) Добавьте комментарий к своему коду, который ссылается на сообщение, где вы его нашли, или

B) Соблюдайте стандарт MIT, как он обычно используется, включая полный текст лицензии в исходный код.

Вы уже делаете вариант А, верно? Это просто стандартная рабочая процедура, когда дело доходит до поиска кода в Интернете — комментарий с гиперссылкой гарантирует, что вы сможете выполнить отладку в будущем. Но в соответствии с новыми условиями комментарий с гиперссылкой — это больше, чем просто прагматично, это совет по шляпе, и это око за око, которое гарантирует, что вы выполнили условия автора.

В целом, использование кода из Интернета — это нормально, но я хотел бы предостеречь вас от переусердствования. Если каждая функция в вашем репозитории содержит ссылку на Stack Overflow, я бы поставил под сомнение вашу способность решать более конкретные задачи.