Czy powinienem zwolnić kod źródłowy, aby naprawić błąd


15

Mam błąd w aplikacji, którą tworzę. Zadałem pytanie na temat SO, a jeden z użytkowników poprosił mnie o opublikowanie lub przesłanie mu całego kodu, aby mógł na niego spojrzeć.

Całkowicie rozumiem prośbę. Jest to ważne i zrozumiałe. Mam jednak wątpliwości, czy powinienem. Oczywiście daję mu / ona klucze do królestwa i nie będę się uciekać, jeśli zrobi coś złośliwego.

Chcę również dodać, że mam na myśli brak szacunku dla użytkownika w SO, który zaoferował swoją pomoc. Właśnie emituję obawy.

Chcę naprawić mój błąd, ale nie ma gwarancji, że ta osoba będzie w stanie go naprawić.

Czy powinienem wydać cały kod źródłowy i mieć nadzieję na najlepsze? A może zatrzymasz i spróbujesz to rozgryźć na własną rękę?

Co byś zrobił?


3
Trudne pytanie. Dobrze zadane
yfeldblum

Odpowiedzi:


44

Zbuduj SSCCE (krótki, samodzielny, poprawny przykład). Jeśli błąd zniknie po usunięciu niektórych dodatkowych szczegółów dotyczących SSCCE, oznacza to, że został znaleziony.

W przeciwnym razie otrzymasz SSCCE, które podasz lub opublikujesz, co idealnie eliminuje kod, którego obawiasz się o udostępnianie.


1
Dla osób niezaznajomionych z „SSCCE”: acronymfinder.com/SSCCE.html (zignoruj ​​pierwszą definicję „powierzchownego raka płaskonabłonkowego przełyku”). Aha, znalazłem lepszy link: sscce.org
FrustratedWithFormsDesigner

Co to jest SSCCE? EDYCJA: Po prostu wstaw to w swoją odpowiedź. :)
jprete,

7
Zbudowanie możliwie najmniejszego repro jest świetne z wielu powodów, nie tylko dlatego, że nie zdradzasz kodu, ale możesz znaleźć błąd w trakcie opracowywania przykładu.
Steve

3
A SSCCE pełni również funkcję testu regresji, upewniając się, że nigdy więcej nie pojawi się ten błąd. Często też możesz zbudować regułę dla narzędzia analizy statycznej z SSCCE, dzięki czemu upewnisz się, że ten błąd nie tylko nigdy więcej się nie pojawi, ale nigdy więcej nie otrzymasz podobnego błędu.
Jörg W Mittag,

9

Nie zrobiłbym tego, szczególnie jeśli pracujesz dla kogoś innego, kto prawdopodobnie nie doceniłby ciebie za przekazanie kodu źródłowego potencjalnym konkurentom.

Ale nawet jeśli jest to twój własny kod, nie ma sensu przepełnienia stosu, który polega na utworzeniu indeksu pytań i odpowiedzi dla wszystkich do przeczytania i użycia. Więc zamieszczasz wystarczająco dużo, aby zadać pytanie, ludzie odpowiadają na pytanie w formie, w jakiej zostały opublikowane, a przyszli czytelnicy mają dobrze zamknięte pytanie i odpowiedź przed nimi.

Jeśli nie możesz opublikować wystarczająco dużo, aby zrozumieć błąd, powinieneś spróbować odtworzyć błąd w jak najmniejszym fragmencie kodu i opublikować go. ( EDYCJA: Krótka samowystarczalna przykładowa kompilowalna wersja wspomniana przez jzd.) Nie publikuj dużych ilości kodu źródłowego i nie przekazuj dużych fragmentów swojej aplikacji nieznajomym w Internecie.


2

Jeśli to kod, który planujesz wydać w ramach projektu open source, nie martwiłbym się zbytnio. W przeciwnym razie, jeśli jest to kod, nad którym pracujesz w miejscu zatrudnienia i zawiera zastrzeżone pomysły należące do kogoś innego, nie udostępniaj go nikomu. Może sprawić ci wiele kłopotów.

Wykorzystaj swój najlepszy osąd!


1

Jeśli jest to kod twojego osobistego projektu i nie jest to projekt komercyjny, nie masz problemów z podaniem źródła, dopóki przechowujesz jego kopię (lepiej w niektórych systemach kontroli wersji kodu źródłowego).


0

Bądź dyskretny

To jest niewinne. Chcesz opublikować kod i uzyskać pomoc społeczności SO. Problem polega na tym, że ludzie zawsze patrzą.

Zostałem napisany za opublikowanie skryptu. Zdarza się.

Napisz w domu lub w kawiarni. Publikuj dyskretnie. Powinieneś być w stanie robić notatki i przynosić je bez kłopotów.

Uwaga: Jestem trochę wkurzony tym, jak byłem naiwny. Bądź mądry!


Myślę, że słowo, którego szukasz, jest „dyskretne”, być może spędziłeś zbyt dużo czasu na programowaniu! :)
Sedate Alien
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.