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


28

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

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

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


5
ІМХО, це питання взагалі не заслуговує на голосування проти голосу. Мене дуже цікавить тема. Особливо знаючи, як це сприймають кінцеві користувачі, справжні боси.

Це прем'єр-клас для класичного @Mark Trapp "ми тут, щоб вирішити реальні проблеми, з якими ви можете зіткнутися".
Gratzy

1
@ChrisF Нічого собі, якщо на моє запитання programmers.stackexchange.com/questions/38810/… отримує відповідь на "справжнє запитання", і ти мені це не кажеш, тоді я насправді дуже не збита з мети цього сайту.
Gratzy

1
Велике запитання, ІМХО.
Урі

1
@ Марк С Ай, я просто перевершив параноїк про те, що витрачати ресурси.

Відповіді:


11

Як завжди, відповідь "це залежить".

Пасхальні яйця - один із способів заохочення до вивчення програми "світ". У грі це досить очевидно - ви піднімаєтесь на вершину найвищої гори і знаходите її (наприклад), але для інших застосувань вам слід використовувати приховані параметри як ваше пасхальне яйце. Однак деякі люди сприймають їх як легковажні, тому якщо ви пишете надто серйозну ділову заявку, ви не хочете засмучувати своїх користувачів, представляючи їх на екрані співаючих хом'яків (або що коли-небудь), коли вони знаходять чарівну комбінацію клавіш .

Маючи пасхальне яйце в додатку, воно не повинно згубно впливати на продуктивність. Тому, якщо ви не аналізуєте вхід клавіатури для нормальної роботи програми, яка має Ctrl+ FUяк тригер, є поганою ідеєю. Поки код виконується лише в тому випадку, якщо його знайдено, щоб не було покарання за час виконання. Єдине покарання - збільшення розміру програми - що може бути, а може і не бути проблемою. Якщо розмір програми - це проблема, то, безумовно, залиште це.

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


"Маючи пасхальне яйце в додатку, воно не повинно згубно впливати на продуктивність. Він буде виконаний, лише якщо його знайдуть, щоб не було покарання за виконання". Дійсно? Якщо його спрацьовує CTRL-FU, як заявляє ОП, то чи не вловлює кожен ключовий хід?
Gratzy

2
@Gratzy - Насправді це хороший момент - якщо ви не захоплюєте натискання клавіш для нормальної роботи, то це приклад поганої писанки.
ChrisF

7

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

Пасхальні яйця Імхо швидше будуть прийняті (або навіть оцінені) в іграх, ніж у бізнес-програмному забезпеченні. Навіть Microsoft вклала у свої продукти кілька пасхальних яєць, але майже повністю зупинила це зараз. Причина, чому Microsoft перестала вносити пасхальні яйця, тісно пов'язана з можливими причинами проти пасхальних яєць: проблеми безпеки. Як зазначено у відповідній статті Вікіпедії, Пасхальні яйця зазвичай (принаймні для користувача / клієнта) незадокументовані частини коду, що може змусити його вважати, що продукт був більш відкритим для атак або іншими способами, недостовірними. Крім того, не всі коди пасхальних яєць перевірені та перевірені в однаковій мірі. Це може призвести до виявлення недоліків або отворів в циклі в кодовій базі, що може бути джерелом подальшої атаки або використання зловмисного програмного забезпечення.

Однак, не всі великодні яйця є «поганими» і вимагають підробки фактичного коду продукту. Існує маса способів подання великодніх яєць, особливо в іграх, де код дещо відокремлений від вмісту (ігровий / графічний / сценарійний двигун проти фактичного файлу сценарію чи рівня). Ці способи варіюються від спеціальних текстур / об’єктів та звукових коментарів головного героя (наприклад, як це використовується в DN3D: Doom , Terminator , Indiana Jones , Star Trek ) до таємних рівнів ( "немає рівня корів" ) до діалогів, що показують, коли певний об'єкт / клацніть місце розташування в інтерфейсі користувача та багато іншого. Звичайно, не кожен із них підходить для кожного виду продукції.

Приємний спосіб внесення пасхального яйця у свій продукт - це якось включити себе (і не тільки в розділ кредитів). Blizzard зробив це дуже добре зі StarCraft 2 . Один одиничний портрет - це фактично обличчя одного з розробників. Щось не настільки очевидне, як це, зазвичай підходить для багатьох типів програмного забезпечення, оскільки воно не покладається на знання ЗМІ або певний вид гумору. Наприклад, можливо, ви могли б включити себе як персонажа в контекст продукту. Залежно від продукту, це може навіть не вимагати шансу з кодом або лише дуже простого.

Пасхальні яйця дуже приємні, але не обов'язкові. Реалізація великоднього яйця ніколи не повинна погіршувати фактичний продукт, і його презентація повинна відповідати розрізненій цільовій аудиторії кінцевого продукту. Пасхальне яйце у ​​"серйозній" програмі чи продукт, орієнтований на не дорослих, ніколи не повинен містити гумор для дорослих чи сексуальний вміст, яким би смішним чи нешкідливим він не був. Це може не тільки призвести до правових наслідків, але й вплинути на маркетинговий діапазон програмного забезпечення ( наприклад, рейтинги USK / PEGI / ESRB ).


1
Вам справді потрібно подивитися, чому Microsoft перестала вводити писанки у свій код. Пасхальне яйце - це шлях коду, який не є повністю перевіреним (якщо у вас була можливість зробити повний QA на великодньому яйці, чому ви не знайшли час, щоб замість цього включити іншу корисну функцію?), Що означає це потенційне джерело вразливих місць безпеки.
Анон.

@Anon: Із статті Вікіпедії я згадував у своїй відповіді: "Microsoft, який раніше створив одні з найбільших і найдосконаліших писанок, таких як Microsoft Office, більше не дозволяє писанки в своєму програмному забезпеченні в рамках програми їх надійної ініціативи з обчислювальної техніки ". Джерелом цього твердження є стаття в блозі MSDN, пов'язана у відповіді Чарльза. Я не бачу протиріччя моєму твердженню. Чи можете ви поясніть, де я помилявся? :)
Baelnorn

Перша частина відповіді звучить так: "Ей, Microsoft це робив, хіба це не дивовижно", але тоді фактичні причини, чому вони більше цього не роблять, закопуються у відповідь на півдорозі. Випадковий читач не збирається його бачити, і він відключений від відповідного контексту. В ідеалі я хотів би змінити параграфи, щоб розмістити проти абзацу трохи помітніше.
Анон.

@Anon: Дякую за голову. Я відредагував свою відповідь і переупорядкував параграфи, детально пояснивши причини проти ЕЕ в першій частині.
Baelnorn

5

Пасхальні яйця були поширеними навіть у великих комерційних випусках програмного забезпечення у 80-х та 90-х. Здебільшого вони були милі, і відносно мало людей їх турбувало. Я думаю, що вони сьогодні менш поширені з трьох причин:

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

  2. Гумор дуже-дуже важко зробити правильно, і якщо ви зробите це неправильно, ви образите клієнтів, які платять, які потім перестануть платити за ваше програмне забезпечення і які напишуть багато бридких листів пресі про те, якою страшною, незрілою компанією ви працюєте для. Приклад великоднього яйця, викликаного Ctrl-FU, є прекрасним прикладом. Це, мабуть, істерично смішно для ваших 17-річних друзів, але це правило 0 маркетингу, щоб ніколи не говорити своїм клієнтам "FU", навіть на жарт. Зауважте, що великодні яйця у великому комерційному програмному забезпеченні НІКОЛИ не висміювали користувача, лише конкурентів.

  3. У безсмертних словах Пітера Торка з Мавп у фільмі Голова : "Ніхто не позичає гроші людині з почуттям гумору". Якщо ви купуєте критичну частину інфраструктури програмного забезпечення, почуття гумору в автора не заспокоює. Крім того, чому вони витрачали час на писання писанок, коли вони могли виправити численні помилки безпеки?

Ларрі Остерман багато років тому мав досить відомий пост у блозі, де обговорював, чому група ОС у Microsoft більше не дозволяє писанки .


1
Навіть сьогодні в Google є пасхальне яйце - це означає, що вони перевіряють вхід, щоб викликати писанку при кожному пошуку. Це, мабуть, не так багато обробки, але враховуючи сотні мільйонів пошукових запитів, які вони обробляють щодня ... Я не знаю.
Чарльз Сальвія

Треба зізнатися, що я читав CTRL-FU як різновид KUNG-FU.
Крістофер Крейціг

@Christopher - це цілком розумна інтерпретація. Гумор часто піддається численним тлумаченням, що є частиною того, чому складно вкладати у своє програмне забезпечення, не ризикуючи когось образити.
Чарльз Е. Грант

@CharlesSalvia Залежно від того, як вони обробляють пошук, щоб визначити результати "Ви мали на увазі", він може взагалі не додавати накладних витрат понад те, що вже є для такої поведінки.
JAB

4

Пасхальні яйця - це маленькі секрети, які залишили будівельники. Чи шкодить це кінцевим споживачам? Ні.

Багато відомих і популярних фрагментів програмного забезпечення включали приховані писанки . Пасхальні яйця також використовувались для відображення у розробників почуттів щодо певного дотичного предмета досить елегантним чином.

Що стосується оптимізації коду, до тих пір, поки великодні яйця не надто інтенсивні (привіт, симулятор польоту ), це не повинно погіршити продуктивність в значній мірі.


Я не погоджуюсь. Пасхальне яйце додає ризику виникнення події, яка може завдати шкоди користувачам. У кращому випадку ці "додаткові функції" тестуються та просто використовують час розробників та якості. У гіршому випадку про це ніхто, крім виконавця, не знає. Пізніше впроваджувач залишає компанію, а потім оновлення програмного забезпечення ненавмисно спричиняє зйомку пасхального яйця такими діями, як відсікання подій на клавіатурі, з'їдання всієї доступної оперативної пам’яті або в крайньому випадку ... видалення вмісту користувача жорсткий диск. Поверх? Можливо. Однак я бачив, як кожен з них трапляється як звичайні помилки.
матуся

@mummey: Я думаю, що це дуже малоймовірне явище.
Джош К

Ви б не зробили все можливе, щоб пом'якшити ці ризики?
StuperUser

@Stuper: Ви коли-небудь чули, як пасхальне яйце розбиває програму?
Джош К

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

2

Хоча мені подобаються великодні яйця в програмному забезпеченні, важливо пам’ятати, що межа між яйцем, залишеним у продукті для розваги, і злісною задньою стороною може бути дуже тоненькою з юридичної точки зору. Наприклад, чи потрібно проявляти шкоду? Чи потрібно доводити намір зробити шкоду?

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

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

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


0

Багато хто заявив, що пасхальні яйця більше підходять для ігор, але я думаю, що вони мають користь у бізнес-програмах. Занадто багато людей просто створюють низку рецептів використання бізнес-програми, щоб вони ніколи не дивилися на інші області програми. Я маю на увазі, що є цілі розділи програми, яку вони ніколи не розглядають, якби це не було частиною їхнього навчання, і це могло б їм принести користь. В даний час я працював над додатком із 75 доповідями, і користувачі запитували інформацію, і вони навіть ніколи не запускали жодного звіту. Їм потрібен певний стимул, щоб компенсувати відсутність цікавості (На їх захист, деякі користувачі бояться щось зламати.).


-2

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


Що саме ви маєте на увазі під «вживанням пасхального яйця»? Чи можете ви надати мені приклад?

Це не писанкарство, а куточок. Ми робимо щось особливе для тестування GUI, коли інструмент двічі клацає середньою кнопкою миші в місці розташування екрана (0,0), а потім вводить правильний пароль. Це робиться для того, щоб інструменти автоматизації GUI могли впоратися з цим. Користувачі могли це зробити і теоретично, але на практиці вони туди не потраплять. Крім того, всюди є попереджувальні знаки.
Робота

1
@Glenn, хорошим прикладом може бути ... якщо ви доставляєте настільний графічний інтерфейс. Коли користувач натискає кнопку, вони отримують нове діалогове вікно. Коли користувач натискає цю кнопку, утримуючи клавішу Shift, отримує стару. Це був би хороший спосіб порівняти старий і новий функціонал, намагаючись виправити помилки, викликані новим віджетом. Якщо ви обережні, можете залишити подвійний код, але прокоментувати заднім кодом. Потім, як вам потрібно налагоджувати речі, коментуйте, відновлюйте, і тепер ви можете порівнювати дві речі поряд. Дейв, вибач, що намагався вкрасти твій грім.
Робота
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.