Чи потрібно випустити вихідний код, щоб виправити помилку


15

У моїй програмі помилка, яку я будую. Я задав запитання щодо SO, і один з користувачів попросив мене опублікувати або надіслати йому весь код, щоб він міг його переглянути.

Я повністю розумію запит. Це дійсно і зрозуміло. Однак у мене виникають сумніви, чи варто. Очевидно, я даю йому / їй ключі від королівства, і я не звернуся до нього, якщо він / вона зробить щось шкідливе.

Я також хочу додати, що я маю на увазі відсутність неповаги до користувача на SO, який запропонував їх допомогу. Я просто висловлюю занепокоєння.

Я хочу виправити свою помилку, але немає гарантії, що ця людина зможе її виправити.

Чи варто випустити весь вихідний код і сподіватися на найкраще? Або тримати його і спробувати розібратися самостійно?

Що б ти зробив?


3
Важке запитання. Добре запитав.
yfeldblum

Відповіді:


44

Побудуйте SSCCE (короткий, автономний, правильний приклад). Якщо помилка зникає, коли ви видаляєте деякі додаткові деталі для SSCCE, то ви їх знайшли.

Інакше у вас з’явиться SSCCE, який ви надаєте або розміщуєте, що ідеально виключає код, який ви хочете поділитися.


1
Для тих, хто не знає "SSCCE": acronymfinder.com/SSCCE.html (ігноруйте перше визначення "Поверхневий плоскоклітинний рак стравоходу"). Ага, знайшли ліпше посилання: sscce.org
FrustratedWithFormsDesigner

Що таке SSCCE? РЕДАКТУЙТЕ: Просто вставте його у відповідь. :)
jprete

7
Створення найменшого можливого докору чудово підходить з багатьох причин. Ви не тільки не передаєте свій код, але й можете виявити помилку в процесі розробки прикладу.
Стів

3
І SSCCE подвоюється як регресійний тест, гарантуючи, що ви більше ніколи не отримаєте цю помилку. Крім того, часто ви можете створити правило для інструменту статичного аналізу з SSCCE, таким чином, також переконуючись, що ви не тільки не отримаєте цю помилку більше ніколи, але і більше ніколи не отримаєте подібну помилку.
Йорг W Міттаг

9

Я б цього не робив, особливо якщо ви працюєте на когось іншого, який, швидше за все, не оцінить вас, коли ви передаєте вихідний код потенційним конкурентам.

Але навіть якщо це власний код, він пропускає точку переповнення стека, яка полягає в тому, щоб мати індекс питань і відповідей для кожного, хто їх може прочитати та використовувати. Тож ви виставляєте достатньо, щоб поставити своє запитання, люди відповідають на запитання як опубліковано, а майбутні читачі мають добре складене запитання та відповідь перед собою.

Якщо ви не можете розмістити повідомлення достатньо, щоб зрозуміти помилку, тоді ви повинні спробувати відтворити помилку якнайменший шматок коду, і опублікувати це. ( EDIT: Коротка концепція прикладного вмісту, що згадується jzd.) Не публікуйте велику кількість вихідного коду та не просто передайте великі шматки вашої заявки зовсім незнайомим людям в Інтернеті.


2

Якщо це код, який ви плануєте випустити у рамках проекту з відкритим кодом, то я б не хвилювався надто сильно. В іншому випадку, якщо це код, над яким ви працюєте за місцем роботи, і він містить власні ідеї, які належать комусь іншому, то не відпускайте його нікому. Це може доставити вам багато проблем.

Скористайтеся своїм найкращим судженням!


1

Якщо це код вашого особистого проекту, а він не є комерційним, у вас не виникне проблем із наданням джерела, якщо ви зберігаєте його копію (краще в якійсь системі контролю версій вихідного коду).


0

Будьте дискретні

Це невинно. Ви хочете опублікувати якийсь код та отримати довідку спільноти SO. Проблема в тому, що люди завжди дивляться.

Мені написали для публікації сценарію. Це буває.

Повідомлення вдома або в кафе. Опублікувати дискретно. Ви повинні мати можливість взяти кілька записок і внести їх, не потрапляючи в халепу.

Примітка: Я трохи розсердився, наскільки я був наївним. Бути розумним!


Я думаю, що слово, яке ви шукаєте, - «стримане», можливо, ви витратили занадто багато часу на програмування! :)
Sedate Alien
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.