Jakie są argumenty przeciwko pisankom? Czy są jakieś argumenty, by poprzeć nawet pisanki? [Zamknięte]

28

Jestem trochę błazenem, więc pomysł na pisankę wciąż mi się podoba. Dodałem je wcześniej do mojego kodu, ale moja grupa przyjaciół ma żart z używania CTRL-FU do uruchomienia jajka.

Teraz jestem trochę paranoikiem co do wydajności, więc lubię usuwać nadmiar, gdy tylko jest to możliwe. Jest to bardzo sprzeczne z pisankami, ponieważ są one w 100% zbędne.

Jakie są argumenty przeciwko pisankom? Czy są też jakieś argumenty przemawiające za poparciem pisanek?


źródło
5
IMHO to pytanie wcale nie zasługuje na głos w dół, z pewnością nie bez uzasadnienia. Jestem bardzo zainteresowany tym tematem. Zwłaszcza wiedząc, jak są postrzegani przez użytkowników końcowych, prawdziwych szefów.
To podstawa klasycznego @Mark Trapp „jesteśmy tutaj, aby rozwiązać prawdziwe problemy, z którymi możesz się spotkać”.
Gratzy
1
@ ChrisF wow, jeśli moje pytanie programiści.stackexchange.com/ questions/38810/... otrzymają odpowiedź „prawdziwe pytanie”, a jeśli powiesz mi, że tak nie jest, to naprawdę jestem dość zdezorientowany co do celu tej witryny.
Gratzy
1
Świetne pytanie, IMHO.
Uri
1
@ Mark C Tak, jestem po prostu przesadną paranoikiem na temat marnowania zasobów.

Odpowiedzi:

11

Jak zawsze odpowiedź brzmi „to zależy”.

Pisanki są jednym ze sposobów zachęcania do odkrywania programu „świat”. W grze jest to raczej oczywiste - wspinasz się na szczyt najwyższej góry i znajdujesz ją (na przykład), ale w innych aplikacjach musisz używać ukrytych opcji jako jajka wielkanocnego. Jednak są one uważane przez niektórych za niepoważne, więc jeśli piszesz bardzo poważną aplikację biznesową, nie chcesz denerwować użytkowników, prezentując im ekran śpiewających chomików (lub kiedykolwiek), gdy znajdą magiczną kombinację klawiszy .

Posiadanie pisanki w aplikacji nie powinno mieć negatywnego wpływu na wydajność. Więc jeśli nie analizujesz danych wejściowych z klawiatury dla normalnego działania aplikacji, posiadanie Ctrl+ FUjako wyzwalacza jest złym pomysłem. Tak długo, jak kod jest wykonywany tylko wtedy, gdy zostanie znaleziony, nie ma kary wykonawczej. Jedyną karą jest wzrost wielkości programu - co może, ale nie musi stanowić problemu. Jeśli rozmiar programu stanowi problem, zdecydowanie go pomiń.

Jednak posiadanie dodatkowego kodu wiąże się z problemem pomocy technicznej. Nadal musisz obsługiwać kod i upewnić się, że działa i nie powoduje problemów po uruchomieniu. Ostatnią rzeczą, jakiej chcesz, jest awaria aplikacji, gdy użytkownik znajdzie Pisankę!

ChrisF
źródło
„Posiadanie pisanki w aplikacji nie powinno mieć negatywnego wpływu na wydajność. Zostanie wykonane tylko wtedy, gdy zostanie znalezione, aby nie było kary wykonawczej”. Naprawdę? Jeśli jest wyzwalany przez CTRL-FU jako stany OP, to czy nie jest to pułapka przy każdym naciśnięciu klawisza?
Gratzy 23.01.11
2
@Gratzy - Właściwie to dobry punkt - chyba że łapiesz naciśnięcia klawiszy dla normalnej operacji, to jest to przykład złego jajka wielkanocnego.
ChrisF
7

Powiedziałbym, że wysoce zależy od rodzaju oprogramowania, które tworzysz.

Jaja wielkanocne Imho częściej są akceptowane (a nawet doceniane) w grach niż w oprogramowaniu biznesowym. Nawet Microsoft umieścił kilka pisanek w swoich produktach, ale teraz prawie całkowicie to powstrzymał. Powód, dla którego Microsoft przestał wkładać pisanki, jest ściśle związany z możliwymi przyczynami przeciwko pisankom: obawami dotyczącymi bezpieczeństwa. Jak opisano w odpowiednim artykule w Wikipedii, Pisanki są zwykle (przynajmniej dla użytkownika / klienta) nieudokumentowanymi częściami kodu, co może prowadzić do przekonania, że ​​produkt był bardziej otwarty na ataki lub w inny sposób niegodny zaufania. Co więcej, nie cały kod pisanki jest testowany i kontrolowany w takim samym stopniu, jak kod „krytyczny dla misji”. Może to prowadzić do nieodkrytych wad lub luk w bazie kodu, które mogą być źródłem późniejszego ataku lub exploita złośliwego oprogramowania.

Jednak nie wszystkie pisanki są „złe” i wymagają manipulowania rzeczywistym kodem produktu. Istnieje wiele sposobów prezentowania pisanek, szczególnie w grach, w których kod jest nieco oddzielony od treści (gra / grafika / silnik skryptowy vs. rzeczywiste pliki skryptów lub poziomów). Te sposoby obejmują od specjalnych tekstur / obiektów i komentarzy dźwiękowych głównego bohatera (np. Stosowanych w DN3D: Doom , Terminator , Indiana Jones , Star Trek ) po tajne poziomy ( „nie ma poziomu krowy” ) po okna dialogowe pokazujące, kiedy określony obiekt kliknięto / location w interfejsie użytkownika i wiele więcej. Oczywiście nie każdy z nich jest odpowiedni dla każdego rodzaju produktu.

Dobrym sposobem na umieszczenie jajka wielkanocnego w swoim produkcie jest włączenie się w jakiś sposób (i nie tylko w dziale kredytów). Blizzard zrobił to bardzo dobrze z StarCraft 2 . Jeden portret jednostki jest tak naprawdę twarzą jednego z programistów. Coś nie tak oczywistego jest zwykle odpowiednie dla wielu różnych rodzajów oprogramowania, ponieważ nie opiera się na wiedzy medialnej ani pewnego rodzaju humorze. Na przykład, być może możesz uwzględnić siebie jako postać w kontekście produktu. W zależności od produktu może to nawet nie wymagać szansy na kod lub tylko bardzo prosty.

Pisanki są ładne, ale nie wymagane. Wdrożenie jajka wielkanocnego nigdy nie powinno umniejszać rzeczywistego produktu, a jego prezentacja powinna być odpowiednia dla docelowej grupy docelowej końcowego produktu. Pisanka w „poważnej” aplikacji lub produkt skierowany do osób dorosłych nie powinien zawierać humoru ani treści seksualnych dla dorosłych, bez względu na to, jak zabawny lub nieszkodliwy wydaje się być. Może to nie tylko prowadzić do konsekwencji prawnych, ale także wpłynąć na zakres marketingowy oprogramowania ( na przykład oceny USK / PEGI / ESRB ).

Baelnorn
źródło
1
Naprawdę musisz sprawdzić, dlaczego Microsoft przestał umieszczać pisanki w swoim kodzie. Pisanka to ścieżka kodu, która nie jest w pełni przetestowana (jeśli miałeś okazję przeprowadzić pełną kontrolę jakości pisanki, dlaczego nie poświęciłeś czasu na dodanie innej, przydatnej funkcji?), Co oznacza jest to potencjalne źródło luk w zabezpieczeniach.
Anon.
@Anon: Z artykułu w Wikipedii, o którym wspomniałem w mojej odpowiedzi: „Microsoft, który w przeszłości stworzył jedne z największych i najbardziej rozbudowanych pisanek, takich jak te w pakiecie Microsoft Office, nie zezwala już na pisanki w swoim oprogramowaniu w ramach ich inicjatywa Trustworthy Computing ”. Źródłem tego stwierdzenia jest artykuł na blogu MSDN, do którego link znajduje się w odpowiedzi Charlesa. Nie widzę żadnej sprzeczności z moim oświadczeniem. Czy możesz wyjaśnić, gdzie popełniłem błąd? :)
Baelnorn
Pierwsza część odpowiedzi brzmi: „hej, Microsoft to robił, prawda?”, Ale rzeczywiste powody, dla których już tego nie robią, są ukryte w połowie odpowiedzi. Zwykły czytelnik tego nie zobaczy i jest odłączony od odpowiedniego kontekstu. Idealnie chciałbym przetasować akapity, aby umieścić paragraf minus nieco bardziej widoczny.
Anon.
@Anon: Dzięki za zgłoszenie się. Zredagowałem swoją odpowiedź i zmieniłem kolejność akapitów, szczegółowo opisując powody przeciw EE w pierwszej części.
Baelnorn,
5

Pisanki były powszechne nawet w głównych wersjach oprogramowania komercyjnego w latach 80. i 90. W przeważającej części były urocze i niepokoiło ich stosunkowo niewiele osób. Myślę, że są dziś mniej popularne z trzech powodów:

  1. Jak wszystkie praktyczne żarty, są zabawne, dopóki ktoś nie rzuca się w oczy. Jeśli w Twoim jaju wielkanocnym występuje błąd, który powoduje utratę danych lub problem z wydajnością, możesz w końcu wyjaśnić grupie prawników, że tak naprawdę nie rozpowszechniasz „złośliwego oprogramowania”.

  2. Humor jest bardzo, bardzo trudny do zrobienia dobrze, a jeśli zrobisz to źle, obrazisz klientów, którzy przestaną płacić za twoje oprogramowanie i napiszą wiele nieprzyjemnych listów do prasy o tym, jak straszną, niedojrzałą firmą pracujesz dla. Przykład jajka wielkanocnego uruchomionego przez Ctrl-FU jest doskonałym przykładem. Jest to prawdopodobnie histerycznie zabawne dla twoich 17-letnich przyjaciół, ale jest to 0 reguła marketingu, aby nigdy nie mówić swoim klientom „FU”, nawet żartując. Zauważ, że pisanki w dużym komercyjnym oprogramowaniu NIGDY nie wyśmiewały użytkownika, tylko konkurentów.

  3. W nieśmiertelnych słowach Petera Torka z Monkees w filmie Głowa : „Nikt nie pożycza pieniędzy człowiekowi z poczuciem humoru”. Jeśli kupujesz kluczowy element infrastruktury oprogramowania, poczucie humoru autora nie jest uspokajające. Poza tym, dlaczego spędzali czas na pisaniu pisanek, skoro mogli naprawić liczne błędy bezpieczeństwa?

Larry Osterman miał dość znany post na blogu wiele lat temu, omawiając, dlaczego grupa OS w Microsoft nie zezwala już na pisanki .

Charles E. Grant
źródło
1
Nawet dzisiaj Google ma pisankę - co oznacza, że ​​sprawdzają dane wejściowe do uruchomienia pisanki przy każdym wyszukiwaniu. Prawdopodobnie nie jest to dużo przetwarzanie, ale biorąc pod uwagę setki milionów wyszukiwań, które przetwarzają każdego dnia ... Nie wiem.
Charles Salvia
Muszę wyznać, że czytałem CTRL-FU jako rodzaj KUNG-FU.
Christopher Creutzig
@Christopher, to całkowicie rozsądna interpretacja. Humor jest często przedmiotem wielu interpretacji, co jest częścią tego, dlaczego trudno jest wprowadzić oprogramowanie bez ryzyka obrażenia kogoś.
Charles E. Grant,
@CharlesSalvia W zależności od tego, w jaki sposób przetwarzają wyszukiwania w celu ustalenia wyników „Czy miałeś na myśli”, może nie dodawać żadnych kosztów ogólnych nad tym, co już istnieje dla tego zachowania.
JAB
4

Pisanki to małe tajemnice pozostawione przez budowniczych. Czy boli użytkowników końcowych? Nie.

Wiele znanych i popularnych programów zawiera ukryte pisanki . Pisanki zostały również wykorzystane do pokazania uczniom uczuć na konkretny drażliwy temat w dość elegancki sposób.

Jeśli chodzi o optymalizację kodu, dopóki pisanki nie są zbyt intensywne (cześć symulator lotu ), nie powinno to znacząco wpływać na wydajność.

Josh K.
źródło
Nie zgadzam się. Pisanka zwiększa ryzyko wystąpienia zdarzenia, które może zaszkodzić użytkownikom. W najlepszym razie te „dodane funkcje” są testowane i po prostu zużywają czas zarówno programistów, jak i kontroli jakości. W najgorszym przypadku nikt poza implementatorem nie wie o tym. Wdrożyciel później odchodzi z firmy, a następnie aktualizacja oprogramowania niezamierzenie powoduje, że easter egg staje się nieprzyjazny, wykonując takie czynności, jak odcięcie klawiatury, zjedzenie całej dostępnej pamięci RAM lub, w skrajnym przypadku ... skasowanie zawartości użytkownika twardy dysk. Over-the-top? Może. Jednak widziałem, że każdy z nich występuje jako normalne błędy.
mummey
@mummey: Myślę, że jest to bardzo mało prawdopodobne zdarzenie.
Josh K
Czy nie dołożyłbyś wszelkich starań, aby zmniejszyć ryzyko?
StuperUser
@Stuper: Czy słyszałeś kiedyś o wielkanocnym jajku powodującym awarię programu?
Josh K
Nie słyszałem o żadnych, ale awarie podczas pisanek nie są wystarczająco krytyczne, aby uzasadnić publikację problemów w większości. Użytkownicy często nie wysyłają informacji o większości awarii programu MS podczas normalnej pracy.
StuperUser
2

Chociaż lubię pisanki w oprogramowaniu, ważne jest, aby pamiętać, że granica między jajkiem pozostawionym w produkcie dla zabawy a złośliwym backdoorem może być bardzo cienka z prawnego punktu widzenia. Na przykład, czy konieczne jest wykazanie szkody? Czy trzeba udowodnić chęć wyrządzenia krzywdy?

Biorąc pod uwagę, że rozumienie przez sądy komputerów i oprogramowania jest dość nieszczęśliwe (o czym świadczą niektóre patenty na oprogramowanie), debata o takiej sprawie kupi kilku prawnikom ładny dom wakacyjny w Aspen. Jeśli weźmie się pod uwagę różne środowiska prawne (takie jak DMCA), w których oprogramowanie jest publikowane i dystrybuowane na całym świecie, może również kupić im domy wakacyjne w Alpach.

Jako zatrudnieni inżynierowie gwarantujemy, że nasza firma nie zaszkodzi. Spory sądowe mogą zaszkodzić, a spory sądowe są prawdopodobne, jeśli dostarczymy oprogramowanie na podstawie umowy innym klientom, zwłaszcza rządom lub dużym przedsiębiorstwom. Dlatego osobiście wybrałbym błąd po bezpiecznej stronie.

Pamiętajcie, inżynierowie istnieją po to, by wykorzystywać logikę do dobrych celów, podczas gdy prawnicy istnieją po to, by przekręcać logikę za zło. Dlatego zarabiają o wiele więcej niż my.

Uri
źródło
0

Wiele osób twierdzi, że pisanki są bardziej odpowiednie do gier, ale myślę, że mają zastosowanie w aplikacjach biznesowych. Zbyt wiele osób po prostu tworzy serię przepisów na korzystanie z aplikacji biznesowej, których nigdy nie patrzą na inne obszary aplikacji. Mam na myśli całe sekcje aplikacji, których nigdy nie oglądają, gdyby nie były częścią ich szkolenia i mogły być dla nich przydatne. Obecnie pracowałem nad aplikacją z 75 raportami, a użytkownicy pytali o informacje i nigdy nie uruchomili ani jednego raportu. Potrzebują zachęty, aby nadrobić brak ciekawości (w obronie niektórzy użytkownicy boją się coś zepsuć).

JeffO
źródło
-2

Używam pisanek, aby pomóc mi w debugowaniu i kodowaniu. Dlatego pisanki, które włożyłem, służą celowi i prawdopodobnie nie są uważane za pisanki.

Dave
źródło
Co dokładnie rozumiesz przez „pisankę” w swoim użyciu? Czy możesz podać mi przykład?
To nie jest pisanka, ale tylne wejście. Robimy coś specjalnego do testowania GUI, gdy narzędzie dwukrotnie klika środkowy przycisk myszy w miejscu ekranu (0,0), a następnie wprowadza prawidłowe hasło. Robi się to, aby narzędzia do automatyzacji GUI mogły to obsłużyć. Użytkownicy mogą to zrobić również w teorii, ale w praktyce nie osiągną tego. Dodatkowo wszędzie są znaki ostrzegawcze.
Job
1
@Glenn, dobrym przykładem może być ... jeśli dostarczasz komputerową aplikację GUI. Gdy użytkownik kliknie przycisk, pojawia się nowe okno dialogowe. Gdy użytkownik kliknie ten przycisk, przytrzymując klawisz Shift, otrzymuje stary. Byłby to dobry sposób na porównanie starej i nowej funkcjonalności podczas próby naprawienia błędów spowodowanych przez nowy widżet. Jeśli jesteś ostrożny, możesz zostawić podwójny kod, ale komentować backdoora. Następnie, gdy potrzebujesz debugować rzeczy, odkomentuj, odbuduj, a teraz możesz porównać dwie rzeczy obok siebie. Dave, przepraszam, że próbujesz ukraść twój piorun.
Job