Una historia con moraleja de la Aflicción: El escarabajo que se escapó
La semana pasada me lanzó una versión actualizada de mi Tabla de Contenidos Creador plugin para WordPress. Me enorgullezco de mi código, detección de averías y pruebas de habilidades. Que todo se vino abajo en una sola noche.
Para no hacer el cuento largo, la nueva revisión requiere una función auxiliar para mostrar las entradas de mensaje. La función auxiliar se llama sólo por una función y por lo tanto, decidió incluir la función auxiliar, como un niño de esa función. Esta es una práctica común en muchos idiomas, ya que claramente los paquetes de todas las funciones y sus ayudantes en las proximidades. La función de los padres por la forma en que se llama cada vez que se muestra una página y terminará inmediatamente si esa página no incluye el mapa del sitio etiqueta iniciador.
Ok. El tiempo pasa. Ahora es 2am. El código está listo para probar. Yo sé que la función termina los padres inmediatamente si no encuentra la etiqueta de iniciador. Esto se ha trabajado anteriormente, y me fui lejos de ella, por lo que debe seguir trabajando. ¿No? Reviso la página de mapa del sitio, probar todas las opciones nuevas y viejas y demostrar que el código funciona como se esperaba. Rápidamente me sincronizar el repositorio SVN y salir corriendo a la cama para dormir un poco antes de que salga el sol.
A la mañana siguiente me decido a ver un sitio grande, sé que usa mi plugin. No hay sustituto para las pruebas del mundo real. Sí, todo se ve bien. En ese momento me di cuenta de un puesto en el mapa del sitio que parecía interesante. He hecho clic en el enlace de la categoría y fue galardonado con el primer puesto en la categoría y luego un gran mensaje de error php desagradable. Mmm. Miré a otro sitio de gran tamaño. Mmm. Tal vez una coincidencia. Echemos un vistazo a uno más. ¡Oh, no!
¿Qué salió mal? Recuerde que la función del niño? He oído decir que los niños pueden ser el mal y que resultó ser cierto en este caso. Si una página de blog, página de la categoría, página de la etiqueta, o incluso una página de inicio se muestra, los mensajes se muestran múltiples en una sola página. WordPress Para ello, pretender que cada puesto es una mini-página y todos los enlaces de las páginas mini-para formar una gran página. Esto quiere decir que mi función principal se llama varias veces. Normalmente no es un problema. Pero ahora que la función contiene las funciones de niño, estas funciones niño se crean cada vez que se llama la función de los padres (incluso si no se utilizan). Por lo tanto, cuando el entonces segundo puesto en la pantalla, la página se bloquea con un mensaje de error la función nombre duplicado. El resultado neto fue que un pequeño error en una función aparentemente no causó varios sitios web muy grandes para ir hacia abajo.
La moral de la historia: si usted es un administrador del sitio web, asegúrese de ejecutar la suite completa de pruebas después de cada actualización del plugin, no importa cuán grande o pequeño plug-in que puede ser.



















