Hola, estoy aprendiendo Symfony practicando en un sitio web. Explorando un poco, descubrí Sensiolabs Insight y comencé a analizar el proyecto. Me aparecieron por supuesto varios problemas que fui solucionando. Entre ellas, hay una que me llama la atención:
Templates should not be too long 9% of all your templates have more than 200 lines, the threshold is 5%.
¿Por qué? Se que es una duda mínima, pero me llama mucho la atención. ¿Afecta el rendimiento en algo? Creo que al final se compila en PHP, así que no le veo el problema.
Respuestas
Lo primero que hay que tener en cuenta es que Insight es un servicio que analiza tu código de manera automática. Por eso ellos mismos te aconsejan que no sigas ciegamente sus recomendaciones. Para ello siempre te muestran la ayuda explicándote por qué lo consideran un error y cómo corregirlo.
En este caso este error está catalogado como Codestyle y su importancia es de tipo Menor, tal y como puedes ver en el listado de comprobaciones de Insight.
El razonamiento sería el siguiente: si muchas de tus plantillas son larguísimas, seguramente no estás aprovechando las funcionalidades de Twig para hacer tu vida de diseñador/programador más fácil. Por ejemplo sería absurdo no usar la herencia para mostrar los elementos comunes a todas las páginas, como la cabecera, el menú principal, el pie de página y la estructura básica de contenidos.
Por otra parte, si varias plantillas comparten un trozo grande código, lo lógico sería extraerlo en una plantilla más pequeña e incluirla con la función {{ include() }}
o con la etiqueta {% embed %}
. De la misma forma, en ocasiones es posible extraer trozos de las plantillas y renderizarlos dinámicamente mediante un controlador a través de la función {{ render(controller()) }}
.
En definitiva, si muchas plantillas de tu aplicación son muy grandes, se va a complicar su mantenimiento y reutilización. Por eso se aconseja utilizar las funcionalidades de Twig para reducir su tamaño y hacer tu trabajo más fácil.
@javiereguiluz
Muchas gracias. Es un gusto siempre pasar por aquí y leer las respuestas que nos otorgas.
@SakyaStelios