Je suis un peu bouffon donc l'idée d'un œuf de Pâques me plaît toujours. Je les ai déjà ajoutés dans mon code, mais mon groupe d'amis a une blague courante d'utiliser CTRL-FU pour déclencher l'œuf.
Maintenant, je suis aussi un peu paranoïaque à propos des performances, donc j'aime supprimer les excès chaque fois que possible. Cela contredit fortement les œufs de Pâques car ils sont 100% superflus.
Quels sont les arguments contre les œufs de Pâques? Y a-t-il également des arguments pour soutenir même les œufs de Pâques?
Réponses:
Comme toujours, la réponse est "cela dépend".
Les œufs de Pâques sont un moyen d'encourager l'exploration du programme "monde". Dans un jeu, c'est assez évident - vous grimpez au sommet de la plus haute montagne et vous la trouvez (par exemple), mais pour d'autres applications, vous devez utiliser des options cachées comme votre œuf de Pâques. Cependant, ils sont considérés comme futiles par certaines personnes, donc si vous écrivez une application commerciale ultra sérieuse, vous ne voulez pas déranger vos utilisateurs en leur présentant un écran de hamsters chantants (ou quoi que ce soit) quand ils trouvent la combinaison de touches magique .
La présence d'un œuf de Pâques dans une application ne devrait pas avoir d'impact négatif sur les performances. Donc, à moins que vous n'analysiez les entrées au clavier pour le fonctionnement normal de votre application, avoir Ctrl+ FUcomme déclencheur est une mauvaise idée. Tant que le code n'est exécuté que s'il est trouvé, il n'y a donc aucune pénalité d'exécution. La seule pénalité est l'augmentation de la taille du programme - qui peut ou non être un problème. Si la taille du programme est un problème, laissez-le définitivement.
Cependant, avoir le code supplémentaire pose un problème de support. Vous devez toujours prendre en charge le code et vous assurer qu'il fonctionne et ne cause pas de problèmes lors de son exécution. La dernière chose que vous voulez, c'est que votre application plante, tout comme l'utilisateur trouve l'œuf de Pâques!
la source
Je dirais que cela dépend fortement du type de logiciel que vous développez.
Les œufs de Pâques à mon humble avis sont plus susceptibles d'être acceptés (ou même appréciés) dans les jeux que dans les logiciels d'entreprise. Même Microsoft avait mis des oeufs de Pâques dans ses produits, mais a presque complètement arrêté cela maintenant. La raison pour laquelle Microsoft a cessé de mettre des œufs de Pâques est étroitement liée aux raisons possibles contre les œufs de Pâques: problèmes de sécurité. Comme indiqué dans l'article Wikipedia pertinent, Les oeufs de Pâques sont généralement (au moins pour l'utilisateur / client) des parties non documentées du code, ce qui peut le faire croire que le produit était plus ouvert aux attaques ou, à d'autres égards, non fiable. De plus, tout le code d'oeufs de Pâques n'est pas testé et audité au même degré que le code "mission critique". Cela peut entraîner des failles non découvertes ou des trous de boucle dans la base de code qui peuvent être à l'origine d'une attaque ultérieure ou d'un exploit de logiciel malveillant.
Cependant, tous les œufs de Pâques ne sont pas «mauvais» et nécessitent une falsification du code réel du produit. Il existe de nombreuses façons de présenter les oeufs de Pâques, en particulier dans les jeux où le code est quelque peu séparé du contenu (jeu / graphiques / moteur de script vs script réel ou fichiers de niveau). Ces méthodes vont des textures / objets spéciaux et des commentaires audio du protagoniste (par exemple, tels qu'utilisés dans DN3D: Doom , Terminator , Indiana Jones , Star Trek ) aux niveaux secrets ( "il n'y a pas de niveau de vache" ) aux dialogues indiquant quand un certain objet / emplacement dans l'interface utilisateur est cliqué, et bien plus encore. Bien sûr, chacun d'eux ne convient pas à chaque type de produit.
Une bonne façon de mettre un œuf de Pâques dans votre produit est de vous inclure en quelque sorte (et pas seulement dans la section crédits). Blizzard a très bien fait cela avec StarCraft 2 . Un portrait d'unité est en fait le visage de l'un des développeurs. Quelque chose de pas si évident comme ça est généralement approprié pour de nombreux types de logiciels, car il ne repose pas sur la connaissance des médias ou un certain type d'humour. Par exemple, vous pourriez peut-être vous inclure en tant que personnage dans le contexte du produit. Selon le produit, cela peut même ne pas nécessiter une chance au code ou seulement très simple.
Les oeufs de Pâques sont à mon humble avis mais pas obligatoires. La mise en œuvre d'un œuf de Pâques ne doit jamais nuire au produit réel et sa présentation doit être adaptée au public cible en retrait du produit final. Un œuf de Pâques dans une application "sérieuse" ou un produit destiné aux non-adultes ne devrait jamais inclure de l'humour adulte ou du contenu sexuel, aussi drôle ou inoffensif qu'il puisse paraître. Cela pourrait non seulement entraîner des conséquences juridiques, mais également affecter la gamme de commercialisation du logiciel ( notations USK / PEGI / ESRB , par exemple).
la source
Les œufs de Pâques étaient courants même dans les principales versions de logiciels commerciaux des années 80 et 90. Pour la plupart, ils étaient mignons et relativement peu de gens les dérangeaient. Je pense qu'ils sont moins courants aujourd'hui pour trois raisons:
Comme toutes les blagues pratiques, elles sont drôles jusqu'à ce que quelqu'un fasse sortir un œil. Si votre œuf de Pâques a un bogue qui entraîne une perte de données ou un problème de performances, vous devrez peut-être expliquer à un groupe d'avocats que vous ne distribuiez pas réellement de "logiciels malveillants".
L'humour est très, très, difficile à faire correctement, et si vous le faites mal, vous offenserez les clients payants qui cesseront alors de payer pour votre logiciel et qui écriront de nombreuses lettres désagréables à la presse au sujet de la terrible entreprise immature dans laquelle vous travaillez. pour. L'exemple d'un œuf de Pâques déclenché par Ctrl-FU en est un parfait exemple. C'est probablement hystériquement drôle pour vos amis de 17 ans, mais c'est la règle 0 du marketing de ne jamais dire à vos clients "FU", même en plaisantant. Notez que les œufs de Pâques dans les gros logiciels commerciaux ne se sont jamais moqués de l'utilisateur, seulement des concurrents.
Dans les mots immortels de Peter Tork des singes dans le film Head : "Personne ne prête de l'argent à un homme avec un sens de l'humour." Si vous achetez une infrastructure logicielle critique, le sens de l'humour de l'auteur n'est pas rassurant. En plus de cela, pourquoi passaient-ils du temps à écrire des œufs de Pâques alors qu'ils auraient pu corriger leurs nombreux bugs de sécurité?
Larry Osterman avait un blog assez célèbre il y a des années expliquant pourquoi le groupe OS de Microsoft n'autorise plus les œufs de Pâques .
la source
Les œufs de Pâques sont de petits secrets laissés par les constructeurs. Cela nuit-il aux utilisateurs finaux? Non.
De nombreux logiciels bien connus et populaires ont inclus des œufs de Pâques cachés . Les œufs de Pâques ont également été utilisés pour afficher les sentiments d' un développeur sur un sujet délicat particulier d' une manière plutôt élégante.
Quant à l'optimisation du code, tant que les œufs de Pâques ne sont pas trop intensifs (bonjour simulateur de vol ), cela ne devrait pas nuire aux performances de manière significative.
la source
Bien que j'aime les œufs de Pâques dans les logiciels, il est important de se rappeler que la ligne entre un œuf laissé dans un produit pour le plaisir et une porte dérobée malveillante peut être très mince d'un point de vue juridique. Par exemple, faut-il montrer le mal? Faut-il prouver son intention de nuire?
Considérant que la compréhension des tribunaux des ordinateurs et des logiciels est assez misérable (comme en témoignent certains brevets logiciels), débattre d'une telle affaire permettra à plusieurs avocats d'acheter une belle maison de vacances à Aspen. Si l'on considère les différents environnements juridiques (tels que le DMCA) dans lesquels les logiciels sont publiés et distribués dans le monde, il peut également leur acheter des maisons de vacances dans les Alpes.
En tant qu'ingénieurs embauchés, nous nous engageons à ne faire aucun mal à notre entreprise. Un litige pourrait devenir préjudiciable, et un litige est probable si nous livrons des logiciels sous contrat à d'autres clients, en particulier les gouvernements ou les grandes entreprises. Ainsi, je choisirais personnellement d'errer du bon côté.
Rappelez-vous, les ingénieurs existent pour utiliser la logique à de bonnes fins, tandis que les avocats existent pour tordre la logique du mal. C'est pourquoi ils sont payés beaucoup plus que nous.
la source
Beaucoup ont déclaré que les œufs de Pâques sont plus adaptés aux jeux, mais je pense qu'ils ont une utilisation dans les applications commerciales. Trop de gens créent simplement une série de recettes pour utiliser une application métier qu'ils ne regardent jamais dans d'autres domaines de l'application. Je veux dire qu'il y a des sections entières d'une application qu'ils ne regardent jamais si cela ne faisait pas partie de leur formation et cela aurait pu leur être utile. Actuellement, je travaillais sur une application avec 75 rapports et les utilisateurs demandaient des informations et ils n'ont même jamais exécuté un seul rapport. Ils ont besoin d'une incitation pour compenser leur manque de curiosité (Pour leur défense, certains utilisateurs ont peur de casser quelque chose.).
la source
J'utilise des œufs de Pâques pour m'aider à déboguer et à coder. Par conséquent, les œufs de Pâques que j'ai mis en place ont une fonction et ne sont probablement pas considérés comme des œufs de Pâques.
la source