¿Qué argumentos hay en contra de los huevos de pascua? ¿Hay algún argumento para apoyar incluso los huevos de pascua? [cerrado]

28

Soy un poco bufón, así que la idea de un huevo de pascua todavía me atrae. Los he agregado en mi código antes, pero mi grupo de amigos tiene una broma de usar CTRL-FU para activar el huevo.

Ahora también estoy un poco paranoico sobre el rendimiento, así que me gusta eliminar el exceso siempre que sea posible. Esto contradice fuertemente con los huevos de pascua, ya que son códigos 100% superfluos.

¿Qué argumentos hay en contra de los huevos de pascua? Además, ¿hay argumentos para apoyar incluso los huevos de pascua?


fuente
55
En mi humilde opinión, esta pregunta no merece un voto negativo en absoluto, ciertamente no es un no motivado. Yo mismo estoy muy interesado en el tema. Especialmente sabiendo cómo es percibido por los usuarios finales, los verdaderos jefes.
Esto es primordial para un clásico @Mark Trapp "estamos aquí para resolver los problemas reales que pueda enfrentar".
Gratzy el
1
@ChrisF wow si mi pregunta programmers.stackexchange.com/questions/38810/… obtiene la respuesta de "pregunta real" y me dices que esto no es así, realmente estoy bastante confundido sobre el propósito de este sitio.
Gratzy
1
Gran pregunta, en mi humilde opinión.
Uri
1
@ Mark C Aye, estoy demasiado paranoico sobre el desperdicio de recursos.

Respuestas:

11

Como siempre, la respuesta es "depende".

Los huevos de Pascua son una forma de alentar la exploración del programa "mundo". En un juego es bastante obvio: subes a la cima de la montaña más alta y la encuentras (por ejemplo), pero para otras aplicaciones tienes que usar opciones ocultas como tu huevo de Pascua. Sin embargo, algunas personas los consideran frívolos, por lo que si está escribiendo una aplicación comercial extremadamente seria, no querrá molestar a sus usuarios presentándoles una pantalla de hámsters cantando (o lo que sea) cuando encuentren la combinación mágica de teclas .

Tener un huevo de Pascua en una aplicación no debería tener un impacto negativo en el rendimiento. Por lo tanto, a menos que esté analizando la entrada del teclado para el funcionamiento normal de su aplicación, tener Ctrl+ FUcomo desencadenador es una mala idea. Mientras el código solo se ejecute si se encuentra, no hay penalización de tiempo de ejecución. La única sanción es el aumento del tamaño del programa, que puede o no ser un problema. Si el tamaño del programa es un problema, definitivamente no lo incluyas.

Sin embargo, tener el código adicional es un problema de soporte. Aún debe admitir el código y asegurarse de que funciona y no causa problemas cuando se ejecuta. ¡Lo último que desea es que su aplicación se bloquee justo cuando el usuario encuentra el huevo de Pascua!

ChrisF
fuente
"Tener un huevo de Pascua en una aplicación no debería tener un impacto perjudicial en el rendimiento. Solo se ejecutará si se encuentra para que no haya penalización en el tiempo de ejecución". De Verdad? Si se activa por un CTRL-FU como indica el OP, ¿no estás atrapando cada golpe de tecla?
Gratzy
2
@Gratzy: en realidad, ese es un buen punto, a menos que esté atrapando pulsaciones de teclas para la operación normal, ese es un ejemplo de un huevo de Pascua malo.
ChrisF
7

Yo diría que eso depende mucho del tipo de software que estés desarrollando.

Los huevos de Pascua son más propensos a ser aceptados (o incluso apreciados) en los juegos que en el software empresarial. Incluso Microsoft había puesto algunos huevos de Pascua en sus productos, pero ahora lo detuvo por completo. La razón por la cual Microsoft dejó de poner Easter Eggs está estrechamente relacionada con las posibles razones contra Easter Eggs: preocupaciones de seguridad. Como se describe en el artículo relevante de Wikipedia, Los Huevos de Pascua generalmente son (al menos para el usuario / cliente) partes indocumentadas del código, lo que puede llevarlo a creer que el producto estaba más abierto a ataques o de otras maneras no es confiable. Además, no todo el código del huevo de Pascua se prueba y audita en el mismo grado que el código de "misión crítica". Eso puede conducir a fallas no descubiertas o agujeros de bucle en la base del código que pueden ser el origen de un ataque posterior o explotación de malware.

Sin embargo, no todos los Huevos de Pascua son "malos" y requieren alterar el código real del producto. Hay muchas maneras de presentar los Huevos de Pascua, especialmente en juegos en los que el código está algo separado del contenido (juego / gráficos / motor de secuencias de comandos versus secuencias de comandos reales o archivos de nivel). Estas formas van desde texturas / objetos especiales y comentarios de audio del protagonista (por ejemplo, como se usa en DN3D: Doom , Terminator , Indiana Jones , Star Trek ) a niveles secretos ( "no hay nivel de vaca" ) a diálogos que muestran cuándo un determinado objeto / ubicación en la interfaz de usuario se hace clic, y mucho más. Por supuesto, no cada uno de estos es adecuado para cada tipo de producto.

Una buena manera de poner un huevo de Pascua en su producto es incluirse de alguna manera (y no solo en la sección de créditos). Blizzard hizo esto muy bien con StarCraft 2 . El retrato de una unidad es en realidad la cara de uno de los desarrolladores. Algo no tan obvio como eso suele ser apropiado para muchos tipos diferentes de software porque no depende del conocimiento de los medios o de un cierto tipo de humor. Por ejemplo, quizás podría incluirse como un personaje en el contexto del producto. Dependiendo del producto, esto puede no requerir una oportunidad para el código o solo una muy simple.

Los huevos de Pascua son buenos, pero no son obligatorios. La implementación de un huevo de Pascua nunca debe restar valor al producto real y su presentación debe ser apropiada para el público objetivo indentado del producto final. Un huevo de Pascua en una aplicación "seria" o un producto dirigido a personas no adultas nunca debe incluir humor para adultos o contenido sexual, sin importar cuán divertido o inofensivo parezca ser. Esto no solo podría tener consecuencias legales, sino que también afectaría el rango de comercialización del software ( calificaciones de USK / PEGI / ESRB , por ejemplo).

Baelnorn
fuente
1
Realmente necesita ver por qué Microsoft dejó de poner huevos de pascua en su código. Un huevo de pascua es una ruta de código que no se ha probado completamente (si tuvo la oportunidad de hacer un control de calidad completo en un huevo de pascua, ¿por qué no se tomó el tiempo para incluir una función diferente y útil?), Lo que significa Es una fuente potencial de vulnerabilidades de seguridad.
Anon
@Anon: Del artículo de Wikipedia que mencioné en mi respuesta: "Microsoft, que en el pasado creó algunos de los huevos de Pascua más grandes y elaborados, como los de Microsoft Office, ya no permite los huevos de Pascua en su software como parte de su iniciativa de computación confiable ". La fuente de esa declaración es el artículo del blog MSDN vinculado en la respuesta de Charles. No veo ninguna contradicción con mi declaración. ¿Podría explicar dónde me equivoqué? :)
Baelnorn
La primera parte de la respuesta se lee como "oye, Microsoft solía hacer esto, ¿no es increíble?", Pero las razones reales por las que ya no lo hacen están enterradas a la mitad de la respuesta. Un lector casual no lo va a ver, y está desconectado del contexto relevante. Idealmente, me gustaría una reorganización de los párrafos para colocar el párrafo contras un poco más prominente.
Anon
@Anon: Gracias por el aviso. Edité mi respuesta y reordené los párrafos, detallando las razones contra EE en la primera parte.
Baelnorn el
5

Los huevos de Pascua eran comunes incluso en las principales versiones comerciales de software en los años 80 y 90. En su mayor parte eran lindos y relativamente pocas personas se molestaban por ellos. Creo que hoy son menos comunes por tres razones:

  1. Como todos los chistes prácticos, son divertidos hasta que alguien echa un ojo. Si su huevo de Pascua tiene un error que causa la pérdida de datos o un problema de rendimiento, entonces puede terminar teniendo que explicar a un grupo de abogados que en realidad no estaba distribuyendo "malware".

  2. El humor es muy, muy difícil de hacer bien, y si lo haces mal, ofenderás a los clientes que luego dejarán de pagar por tu software y que escribirán muchas cartas desagradables a la prensa sobre la empresa inmadura y terrible en la que trabajas. para. El ejemplo de un huevo de pascua activado por Ctrl-FU es un ejemplo perfecto. Esto es probablemente histéricamente divertido para tus amigos de 17 años, pero es la regla número 0 del marketing que nunca les digas a tus clientes "FU", incluso en broma. Tenga en cuenta que los huevos de pascua en el gran software comercial NUNCA se burlaron del usuario, solo de los competidores.

  3. En las palabras inmortales de Peter Tork de los Monkees en la película Head : "Nadie presta dinero a un hombre con sentido del humor". Si está comprando una pieza crítica de infraestructura de software, el sentido del humor del autor no es tranquilizador. Además de eso, ¿por qué pasaban el tiempo escribiendo huevos de pascua cuando podrían haber reparado sus numerosos errores de seguridad?

Larry Osterman tuvo una publicación en un blog bastante famosa hace años, discutiendo por qué el grupo de sistemas operativos en Microsoft ya no permite los huevos de pascua .

Charles E. Grant
fuente
1
Incluso hoy Google tiene un huevo de pascua , lo que significa que están buscando la entrada para activar el huevo de Pascua en cada búsqueda. Probablemente no sea mucho procesamiento, pero teniendo en cuenta los cientos de millones de búsquedas que procesan cada día ... No lo sé.
Charles Salvia el
Debo confesar que leí CTRL-FU como una especie de KUNG-FU.
Christopher Creutzig
@ Christopher es una interpretación perfectamente razonable. El humor a menudo está sujeto a múltiples interpretaciones, lo que es parte de por qué es difícil poner su software sin correr el riesgo de ofender a alguien.
Charles E. Grant
@CharlesSalvia Dependiendo de cómo procesen las búsquedas para determinar los resultados "Quiso decir", es posible que no agregue ninguna sobrecarga además de lo que ya existe para ese comportamiento.
JAB
4

Los huevos de Pascua son pequeños secretos que dejaron los constructores. ¿Daña a los usuarios finales? No.

Muchas piezas de software conocidas y populares han incluido huevos de pascua ocultos . Los huevos de Pascua también se han utilizado para mostrar los sentimientos de los desarrolladores sobre un tema particular en particular de una manera bastante elegante.

En cuanto a la optimización del código, siempre que los huevos de pascua no sean demasiado intensivos (hola simulador de vuelo ) no debería afectar el rendimiento de manera significativa.

Josh K
fuente
Estoy en desacuerdo. Un huevo de pascua agrega riesgo de que ocurra un evento que pueda dañar a los usuarios. En el mejor de los casos, estas "características adicionales" se prueban y simplemente usan el tiempo de los desarrolladores y el control de calidad. En el peor de los casos, nadie más que el implementador lo sabe. Posteriormente, el implementador deja la empresa y, luego, una actualización del software hace que el huevo de pascua se vuelva malévolo involuntariamente con acciones como cortar eventos del teclado, consumir toda la RAM disponible o, en un caso extremo ... borrar el contenido del usuario disco duro. ¿Exagerado? Tal vez. Sin embargo, he visto que cada uno de estos ocurre como errores normales.
Mummey
@mummey: creo que es un hecho muy poco probable.
Josh K
¿No harías todo lo posible para mitigar esos riesgos?
StuperUser
@Stuper: ¿Alguna vez has oído hablar de un huevo de pascua que bloquea el programa?
Josh K
No se ha oído hablar de ninguno, pero los accidentes durante los huevos de pascua no son lo suficientemente críticos como para justificar la publicación de problemas en su mayor parte. Los usuarios a menudo no envían información para la mayoría de los bloqueos del programa de MS durante el funcionamiento normal .
StuperUser
2

Si bien me gustan los Huevos de Pascua en el software, es importante recordar que la línea entre un huevo que queda en un producto por diversión y una puerta trasera maliciosa puede ser muy delgada desde un punto de vista legal. Por ejemplo, ¿es necesario mostrar daño? ¿Es necesario demostrar la intención de hacer daño?

Teniendo en cuenta que la comprensión de los tribunales de las computadoras y el software es bastante miserable (como lo demuestran algunas patentes de software), debatir tal caso comprará a varios abogados una bonita casa de vacaciones en Aspen. Cuando uno considera los diversos entornos legales (como la DMCA) en los que el software se publica y distribuye en todo el mundo, también puede comprarles casas de vacaciones en los Alpes.

Como ingenieros contratados, garantizamos que nuestra empresa no sufrirá ningún daño. El litigio podría convertirse en un daño, y es probable que lo hagamos si entregamos software por contrato a otros clientes, especialmente gobiernos o grandes empresas. Por lo tanto, personalmente elegiría errar en el lado seguro.

Recuerde, los ingenieros existen para usar la lógica con fines buenos, mientras que los abogados existen para torcer la lógica del mal. Por eso les pagan mucho más que a nosotros.

Uri
fuente
0

Muchos han declarado que los Huevos de Pascua son más adecuados para los juegos, pero creo que tienen un uso en aplicaciones comerciales. Demasiadas personas simplemente crean una serie de recetas para usar una aplicación comercial que nunca miran en otras áreas de la aplicación. Quiero decir que hay secciones enteras de una aplicación que nunca miran si no fuera parte de su entrenamiento y podría haberles sido de alguna utilidad. Actualmente trabajé en una aplicación con 75 informes y los usuarios pedían información y ni siquiera corrieron un solo informe. Necesitan algún incentivo para compensar su falta de curiosidad (en su defensa, algunos usuarios tienen miedo de romper algo).

JeffO
fuente
-2

Utilizo los huevos de Pascua para ayudarme a depurar y codificar. Por lo tanto, los huevos de Pascua que puse sirven para un propósito y probablemente no se consideran huevos de Pascua.

Dave
fuente
¿Qué quiere decir exactamente con "huevo de pascua" en su uso? ¿Puedes darme un ejemplo?
Esto no es un huevo de Pascua sino una puerta trasera. Hacemos algo especial para las pruebas de GUI cuando la herramienta hace doble clic en el botón central del mouse en la ubicación de la pantalla (0,0) y luego ingresa la contraseña correcta. Esto se hace para que las herramientas de automatización de la GUI puedan manejarlo. Los usuarios podrían hacer esto también en teoría, pero en la práctica no llegarán allí. Además, hay señales de advertencia en todo el lugar.
Trabajo
1
@Glenn, un buen ejemplo sería ... si está enviando una aplicación GUI de escritorio. Cuando el usuario hace clic en un botón, obtiene un nuevo cuadro de diálogo. Cuando el usuario hace clic en ese botón mientras mantiene presionada una tecla Mayús, obtiene uno antiguo. Esta sería una buena manera de comparar la funcionalidad antigua y la nueva cuando intente corregir errores causados ​​por el nuevo widget. Si eres cauteloso, puedes dejar el código dual pero comentar por la puerta trasera. Luego, como necesita depurar cosas, descomente, reconstruya, y ahora puede comparar dos cosas una al lado de la otra. Dave, perdón por intentar robarte el trueno.
Trabajo