: este artículo está escrito únicamente por diversión. No intentes repetirlo en el trabajo. Sin embargo, haz lo que quieras en casa. Descargo de responsabilidad Nosotros, los desarrolladores, nos encontramos con con regularidad, es solo parte de nuestro trabajo. Por lo tanto, a primera vista, la pregunta "¿Se puede crear un error a propósito?" Puede parecer banal: "Sí, por supuesto, puedo escribir un error". Sin embargo, si lo piensas bien, ya no todo parece tan obvio. errores El hecho es que el . Un error es un error, una falla en un sistema generalmente error no es lo mismo que el código roto programa de trabajo. El término "error" en el contexto de los problemas de software se originó en 1947, cuando una polilla provocó un mal funcionamiento en la computadora Harvard Mark II. Los ingenieros literalmente encontraron una polilla atrapada en uno de los relés y se refirieron a ella como el "primer caso real de error encontrado". ¿Cuál es el problema? Se sabe que el mundo está bien descrito mediante fórmulas matemáticas. Y las fórmulas son en realidad los algoritmos. Por lo tanto, si pudiéramos describir matemáticamente algún fenómeno, entonces corregir la fórmula resultante para que dé un resultado incorrecto no es una tarea trivial. Sin embargo, no es momento de desesperarse. pueden venir a ayudarnos aquí. Todos los hemos visto . Siempre hay algo mal con los límites 🤷♀️. Entonces, observemos la primera idea para crear un error: . solo a veces Las condiciones límite if index == 0 {…} else if index == n-1 {…} ignorar los casos extremos En general, la iteración a través de matrices es un almacén de errores potenciales. Y el más común de ellos es . Si nunca te has topado con algo así, nunca has codificado. Desafortunadamente, este error es tan popular que la gente comenzó a escribir contenedores seguros para matrices, algo así como . Así que hoy en día, tus colegas difícilmente aprobarán ningún código sin esto. Puedes intentarlo, pero es poco probable... el índice fuera de límites array[safe: index] Los errores frecuentes incluyen . Un algoritmo recursivo puede repetirse infinitamente cuando no existe una condición de salida. La recursividad parece opcional aquí: escriba y listo. Sin embargo, una vez más, la popularidad del error juega en nuestra contra. Los desarrolladores son muy conscientes de los problemas potenciales de los bucles sin fin, y sus ojos definitivamente se darán cuenta de algo como esto en la revisión del código 👮 el desbordamiento de pila while true Para seguir impulsando su insidioso plan a producción, intente utilizar . una variable global para las condiciones de salida y cámbiela silenciosamente desde el exterior var coditionCounter = 0; class A { func foo() { while coditionCounter < 10 { coditionCounter++; B.boo(); } } } class B { func boo() { coditionCounter--; } } Consejos generales Es curioso que incluso ChatGPT se niegue a ayudar cuando se trata de escribir errores. Quizás solo necesito una suscripción premium… 🤔 Lo positivo es que ofrece un conjunto de reglas generales que contribuyen a escribir código sin errores: codificar en pequeños incrementos, seguir estándares de codificación, escribir pruebas unitarias y bla-bla-bla. Podemos intentar hacer lo contrario: escribir código espagueti y olvidarnos de SOLID. Sin embargo, de esta forma que escribimos. En lugar de un arma elegante y puntiaguda, obtenemos un caos inmanejable que conquistará nuestro programa. la IA perdemos el control sobre todo el código Al resolver el problema de crear un error, vale la pena determinar las subtareas. Primero, necesitamos encontrar algunos casos extremos poco comunes. En segundo lugar, debemos disfrazar el error como código normal para que pase la revisión del código. En tercer lugar, tenemos que desviar la atención del departamento de control de calidad. Cuarto, no se deje atrapar de inmediato. Pero esto ya es opcional. Mi consejo general es el siguiente (y tú compartes el tuyo en los comentarios): . Para retroceder, cambie los valores de parámetros importantes desde los lugares más inesperados. Hazlo a través de varias clases como si fueras una VPN. Manipular el nivel de acceso Implemente alguna lógica inesperada en la clase secundaria. En resumen, . rompa el principio L en SOLID class A { func decrease() { x--; } } class B: A { override func decrease() { x++; } } Oculte sus cambios insidiosos en funciones más importantes. : piérdete entre la multitud. Cuantas más colas, mejor Utilice el mismo principio en las solicitudes de extracción. En un PR pequeño, la probabilidad de hacerse notar es mayor. Intente dividir el error en partes y colóquelas en . Si es posible, también a diferentes revisores. diferentes solicitudes de extracción Encuentre las debilidades de su control de calidad y gane su confianza. O distraerlos con conversaciones durante el control. Por cierto, ¿has oído hablar de Heisenbug? Este es un error que desaparece o cambia su comportamiento durante la investigación/ . Como el gato de Schrodinger. Perfecto si no se le asignará el problema solucionado. depuración Un ejemplo común de heisenbug es un error que aparece cuando el programa se compila con un compilador optimizador, pero no cuando el mismo programa se compila sin optimización (como se hace a menudo con el fin de examinarlo con un depurador). Durante la depuración, los valores que un programa optimizado normalmente mantendría en registros a menudo se envían a la memoria principal. Puede ¡Creer en ti mismo! La historia conoce ejemplos de casos en los que un error fue admitido en producción en empresas muy serias. Uno de los errores de software más costosos se produjo en 1996, cuando el cohete Ariane 5, que llevaba la misión Cluster, explotó apenas 40 segundos después del despegue. La falla se debió a un error de software en el sistema de guía del cohete. Vuelo 501 del Ariane 5: En 1999, la NASA perdió el Mars Climate Orbiter debido a un error de software. El software utilizó unidades imperiales (libra-segundo) en lugar de unidades métricas (newton-segundo), lo que provocó que la nave espacial se quemara en la atmósfera marciana. Mars Climate Orbiter de la NASA: Además, algunos errores pueden convertirse en características, como el salto de pared en o el comportamiento de Mahatma Gandh en ... probablemente. Mario Civilization Desarrollar un error es la capacidad de pensar en su algoritmo y anticipar posibles problemas a fondo. Por lo tanto, incluso si no tiene motivos para dejar un error en el código, vale la pena considerarlo.