Quali argomenti ci sono contro le uova di Pasqua? Ci sono argomenti per sostenere anche le uova di Pasqua? [chiuso]


28

Sono un po 'un giullare, quindi l'idea di un uovo di Pasqua mi piace ancora. Li ho già aggiunti nel mio codice prima, ma il mio gruppo di amici scherza sull'uso di CTRL-FU per innescare l'uovo.

Ora sono anche un po 'paranoico sulle prestazioni, quindi mi piace rimuovere gli eccessi ogni volta che è possibile. Ciò contraddice pesantemente con le uova di Pasqua in quanto sono il codice superfluo al 100%.

Quali argomenti ci sono contro le uova di Pasqua? Inoltre, ci sono argomenti per sostenere anche le uova di Pasqua?


5
IMHO questa domanda non merita affatto un voto negativo, sicuramente non motivato. Sono molto interessato dall'argomento. Soprattutto sapendo come viene percepito dagli utenti finali, i veri capi.

Questo è fondamentale per un classico @Mark Trapp "siamo qui per risolvere i problemi reali che potresti incontrare."
Gratzy,

1
@ChrisF caspita se la mia domanda programmers.stackexchange.com/questions/38810/… ottiene la risposta "domanda reale" e tu mi dici questo, allora sono davvero confuso riguardo allo scopo di questo sito.
Gratzy,

1
Ottima domanda, IMHO.
Uri,

1
@Mark C Aye, sono solo paranoico esagerato nello spreco di risorse.

Risposte:


11

Come sempre la risposta è "dipende".

Le uova di Pasqua sono un modo per incoraggiare l'esplorazione del programma "mondo". In un gioco è piuttosto ovvio: ti arrampichi sulla cima della montagna più alta e la trovi (per esempio), ma per altre applicazioni devi usare le opzioni nascoste come uovo di Pasqua. Tuttavia, sono visti come frivoli da alcune persone, quindi se stai scrivendo un'applicazione business ultra seria non vuoi turbare i tuoi utenti presentando loro uno schermo di criceti cantanti (o qualsiasi cosa) quando trovano la magica combinazione di tasti .

Avere un uovo di Pasqua in un'applicazione non dovrebbe avere un impatto negativo sulle prestazioni. Quindi, a meno che non si stia analizzando l'input da tastiera per il normale funzionamento dell'applicazione, avendo Ctrl+ FUcome trigger è una cattiva idea. Finché il codice viene eseguito solo se trovato, non vi è alcuna penalità di runtime. L'unica penalità è l'aumento delle dimensioni del programma, che può essere o meno un problema. Se la dimensione del programma è un problema, allora sicuramente lascialo fuori.

Tuttavia, avendo il codice aggiuntivo c'è un problema di supporto. Devi ancora supportare il codice e assicurarti che funzioni e non causi problemi durante l'esecuzione. L'ultima cosa che vuoi è che la tua applicazione vada in crash proprio quando l'utente trova l'uovo di Pasqua!


"Avere un Easter Egg in un'applicazione non dovrebbe avere un impatto negativo sulle prestazioni. Verrà eseguito solo se trovato, quindi non ci sono penalità di runtime." Veramente? Se è innescato da un CTRL-FU come indicato dall'OP, allora non stai intrappolando ogni colpo di chiave?
Gratzy,

2
@Gratzy - In realtà questo è un buon punto - a meno che tu non stia intrappolando i tasti per il normale funzionamento, allora questo è un esempio di un cattivo uovo di Pasqua.
ChrisF

7

Direi che dipende molto dal tipo di software che stai sviluppando.

Le uova di Pasqua Imho hanno maggiori probabilità di essere accettate (o addirittura apprezzate) nei giochi che nei software aziendali. Perfino Microsoft aveva inserito alcune uova di Pasqua nei loro prodotti, ma ora praticamente è stato completamente bloccato. Il motivo per cui Microsoft ha smesso di mettere le uova di Pasqua è strettamente collegato ai possibili motivi contro le uova di Pasqua: problemi di sicurezza. Come indicato nel pertinente articolo di Wikipedia, Le uova di Pasqua di solito sono (almeno per l'utente / cliente) parti non documentate del codice che possono indurlo a credere che il prodotto fosse più aperto agli attacchi o in qualche modo inaffidabile. Inoltre, non tutto il codice dell'uovo di Pasqua è testato e verificato allo stesso livello del codice "mission critical". Ciò può portare a difetti o loop loop non ancora scoperti nella base di codice che possono essere all'origine di un attacco successivo o di un malware.

Tuttavia, non tutte le uova di Pasqua sono "cattive" e richiedono la manomissione del codice effettivo del prodotto. Esistono molti modi per presentare le uova di Pasqua, specialmente nei giochi in cui il codice è in qualche modo separato dal contenuto (gioco / grafica / motore di scripting rispetto a script o file di livello effettivi). Questi modi vanno da trame / oggetti speciali e commenti audio del protagonista (ad es. Come usato in DN3D: Doom , Terminator , Indiana Jones , Star Trek ) a livelli segreti ( "non esiste un livello di mucca" ) a dialoghi che mostrano quando un determinato oggetto / posizione nell'interfaccia utente viene cliccato e molto altro. Naturalmente non ognuno di questi è adatto per ogni tipo di prodotto.

Un bel modo di inserire un uovo di Pasqua nel tuo prodotto è quello di includerti in qualche modo (e non solo nella sezione crediti). Blizzard lo ha fatto molto bene con StarCraft 2 . Un ritratto di unità è in realtà il volto di uno degli sviluppatori. Qualcosa di non così ovvio di solito è appropriato per molti diversi tipi di software perché non si basa sulla conoscenza dei media o su un certo tipo di umorismo. Ad esempio, forse potresti includere te stesso come personaggio nel contesto del prodotto. A seconda del prodotto, questo potrebbe non richiedere nemmeno una possibilità per il codice o solo uno molto semplice.

Le uova di Pasqua sono belle ma non richieste. L'implementazione di un uovo di Pasqua non dovrebbe mai sminuire il prodotto reale e la sua presentazione dovrebbe essere appropriata per il pubblico target indentato del prodotto finale. Un uovo di Pasqua in un'applicazione "seria" o un prodotto destinato a non adulti non dovrebbe mai includere umorismo o contenuto sessuale per adulti, non importa quanto divertente o innocuo sembri. Ciò potrebbe non solo comportare conseguenze legali, ma influire anche sulla gamma di marketing del software ( ad esempio rating USK / PEGI / ESRB ).


1
Devi davvero capire perché Microsoft ha smesso di inserire le uova di Pasqua nel loro codice. Un uovo di Pasqua è un percorso di codice che non è stato testato completamente (se hai avuto l'opportunità di fare un QA completo su un uovo di Pasqua, perché non hai impiegato del tempo a includere una funzione diversa e utile?), Il che significa è una potenziale fonte di vulnerabilità della sicurezza.
Anon.

@Anon: dall'articolo di Wikipedia che ho citato nella mia risposta: "Microsoft, che in passato ha creato alcune delle uova di Pasqua più grandi ed elaborate come quelle di Microsoft Office, non consente più le uova di Pasqua nel loro software come parte di la loro iniziativa di calcolo affidabile. " La fonte di tale affermazione è l'articolo del blog MSDN collegato nella risposta di Charles. Non vedo alcuna contraddizione con la mia affermazione. Potresti spiegare dove ho sbagliato? :)
Baelnorn,

La prima parte della risposta recita "ehi, Microsoft era solita fare questo, non è fantastico", ma poi i motivi reali per cui non lo fanno più sono sepolti a metà della risposta. Un lettore occasionale non lo vedrà ed è disconnesso dal contesto rilevante. Idealmente, vorrei un rimpasto dei paragrafi per mettere un po 'più in evidenza il paragrafo contro.
Anon.

@Anon: grazie per il testa a testa. Ho modificato la mia risposta e riordinato i paragrafi, descrivendo in dettaglio le ragioni contro EE nella prima parte.
Baelnorn,

5

Le uova di Pasqua erano comuni anche nelle principali versioni di software commerciali negli anni '80 e '90. Per la maggior parte erano carini e relativamente poche persone erano infastidite da loro. Penso che siano meno comuni oggi per tre motivi:

  1. Come tutte le barzellette pratiche, sono divertenti fino a quando qualcuno non viene messo in mostra. Se il tuo uovo di Pasqua ha un bug che causa la perdita di dati o un problema di prestazioni, potresti finire per dover spiegare a un gruppo di avvocati che in realtà non stavi distribuendo "malware".

  2. L'umorismo è molto, molto, difficile da fare bene e se lo fai male offendi i clienti paganti che smetteranno di pagare per il tuo software e che scriveranno molte brutte lettere alla stampa su quale terribile, immatura azienda lavori per. L'esempio di un uovo di Pasqua innescato da Ctrl-FU è un esempio perfetto. Questo è probabilmente istericamente divertente per i tuoi amici di 17 anni, ma è la nona regola del marketing non dire mai ai tuoi clienti "FU", anche scherzosamente. Si noti che le uova di Pasqua nel grande software commerciale non hanno MAI preso in giro l'utente, solo i concorrenti.

  3. Con le parole immortali di Peter Tork of the Monkees nel film Head : "Nessuno presta denaro a un uomo con un senso dell'umorismo". Se stai acquistando un'infrastruttura software critica, il senso dell'umorismo nell'autore non è rassicurante. Oltre a ciò, perché passavano il tempo a scrivere le uova di Pasqua quando avrebbero potuto correggere i loro numerosi bug di sicurezza?

Anni fa Larry Osterman aveva pubblicato un blog abbastanza famoso che discuteva del perché il gruppo OS di Microsoft non consentisse più le uova di Pasqua .


1
Ancora oggi Google ha un uovo di Pasqua , il che significa che stanno verificando l'input per attivare l'uovo di Pasqua in ogni ricerca. Probabilmente non è molto elaborato, ma considerando le centinaia di milioni di ricerche che elaborano ogni giorno ... Non lo so.
Charles Salvia,

Devo confessare di aver letto CTRL-FU come una specie di KUNG-FU.
Christopher Creutzig,

@Christopher è un'interpretazione perfettamente ragionevole. L'umorismo è spesso soggetto a più interpretazioni, il che è parte del motivo per cui è difficile inserire il tuo software senza correre il rischio di offendere qualcuno.
Charles E. Grant,

@CharlesSalvia A seconda di come elaborano le ricerche per determinare i risultati "Intendevi", potrebbe non aggiungere alcun sovraccarico in aggiunta a ciò che è già lì per quel comportamento.
JAB

4

Le uova di Pasqua sono piccoli segreti lasciati dai costruttori. Fa male agli utenti finali? No.

Molti software noti e popolari hanno incluso uova di Pasqua nascoste . Le uova di Pasqua sono state anche usate per mostrare i sentimenti di uno sviluppatore su un particolare argomento delicato in un modo piuttosto elegante.

Per quanto riguarda l'ottimizzazione del codice, fintanto che le uova di Pasqua non sono troppo intense (ciao simulatore di volo ) non dovrebbe danneggiare le prestazioni in modo significativo.


Non sono d'accordo. Un uovo di Pasqua aggiunge il rischio che si verifichi un evento che può danneggiare gli utenti. Nella migliore delle ipotesi, queste "funzionalità aggiunte" vengono testate e utilizzano semplicemente il tempo di attività sia degli sviluppatori che del QA. Nel peggiore dei casi, nessun altro oltre l'implementatore lo sa. L'implementatore in seguito lascia l'azienda e, successivamente, un aggiornamento del software fa involontariamente male all'uovo di Pasqua con azioni come tagliare gli eventi della tastiera, consumare tutta la RAM disponibile o, in un caso estremo ... cancellare il contenuto dell'utente disco rigido. Over-the-top? Può essere. Tuttavia, ho visto ognuno di questi verificarsi come normali bug.
mamma

@mummey: penso che sia un evento altamente improbabile.
Josh K,

Non faresti del tuo meglio per mitigare questi rischi?
Stuper Utente

@Stuper: hai mai sentito parlare di un uovo di Pasqua che ha interrotto il programma?
Josh K,

Non ne ho sentito parlare, ma gli arresti anomali durante le uova di Pasqua non sono abbastanza critici da giustificare la pubblicazione di problemi nella maggior parte dei casi. Gli utenti spesso non restituiscono informazioni per la maggior parte degli arresti anomali del programma MS durante il normale funzionamento.
Stuper Utente

2

Mentre mi piacciono le uova di Pasqua nel software, è importante ricordare che la linea tra un uovo lasciato in un prodotto per divertimento e una backdoor dannosa può essere molto sottile dal punto di vista legale. Ad esempio, è necessario mostrare un danno? È necessario dimostrare l'intenzione di nuocere?

Considerando che la comprensione da parte dei tribunali di computer e software è piuttosto miserabile (come evidenziato da alcuni brevetti software), il dibattito su un caso del genere acquisterà a diversi avvocati una bella casa per le vacanze ad Aspen. Se si considerano i vari ambienti legali (come il DMCA) in cui il software è pubblicato e distribuito in tutto il mondo, si possono anche comprare loro case vacanza nelle Alpi.

Come ingegneri assunti, garantiamo che la nostra azienda non farà alcun male. Il contenzioso potrebbe essere dannoso e il contenzioso è probabile se forniamo software su contratto ad altri clienti, in particolare i governi o le grandi imprese. Quindi, personalmente sceglierei di sbagliare sul sicuro.

Ricorda, gli ingegneri esistono per usare la logica a fini buoni, mentre gli avvocati esistono per distorcere la logica per il male. Ecco perché vengono pagati molto più di noi.


0

Molti hanno affermato che le uova di Pasqua sono più adatte ai giochi, ma penso che abbiano un uso nelle applicazioni aziendali. Troppe persone creano semplicemente una serie di ricette per l'utilizzo di un'app aziendale che non guardano mai ad altre aree dell'applicazione. Voglio dire, ci sono intere sezioni di un'applicazione che non guardano mai se non faceva parte della loro formazione e avrebbe potuto essere di qualche utilità. Al momento ho lavorato su un'applicazione con 75 report e gli utenti chiedevano informazioni e non hanno nemmeno mai eseguito un singolo report. Hanno bisogno di qualche incentivo per compensare la loro mancanza di curiosità (a loro difesa, alcuni utenti hanno paura di rompere qualcosa.).


-2

Uso le uova di Pasqua per aiutarmi nel debug e nella codifica. Pertanto le uova di Pasqua che inserisco hanno uno scopo e probabilmente non sono considerate uova di Pasqua.


Cosa intendi esattamente per "uovo di pasqua" nel tuo utilizzo? Puoi farmi un esempio?

Questo non è un uovo di Pasqua ma una backdoor allora. Facciamo qualcosa di speciale per i test della GUI quando lo strumento fa doppio clic su un pulsante del mouse centrale nella posizione dello schermo (0,0), quindi immette la password corretta. Questo viene fatto in modo che gli strumenti di automazione della GUI possano gestirlo. Gli utenti potrebbero farlo anche in teoria, ma in pratica non ci arriveranno. Inoltre, ci sono segnali di avvertimento in tutto il luogo.
Giobbe

1
@Glenn, un buon esempio sarebbe ... se stai spedendo un'applicazione con interfaccia grafica desktop. Quando l'utente fa clic su un pulsante, ottiene una nuova finestra di dialogo. Quando l'utente fa clic su quel pulsante mentre si tiene premuto un tasto Maiusc, ne ottiene uno vecchio. Questo sarebbe un buon modo per confrontare funzionalità vecchie e nuove, quando si tenta di correggere i bug causati dal nuovo widget. Se si è prudenti, è possibile lasciare il doppio codice ma commentare la backdoor. Quindi, poiché è necessario eseguire il debug delle cose, rimuovere il commento, ricostruire e ora è possibile confrontare due cose fianco a fianco. Dave, scusa per aver cercato di rubare il tuono.
Giobbe
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.