Omitir el punto y coma de terminación en una etiqueta, ¿es una buena idea?

8

Es posible omitir el punto y coma final en una etiqueta.

Ejemplo:

<table>
  <th><td>Name</td><td>Email</td>
  <? foreach ($receivers as $receiver): ?>
  <tr>
    <td><?= $receiver->name ?></td>
    <td><?= $recevier->email ?></td>
  </tr>
  <? endforeach ?>
</table>

Note el <? endforeach ?> sin punto y coma después de endforeach . La Documentación PHP dice:

  

La etiqueta de cierre de un bloque de código PHP automáticamente implica un punto y coma; no es necesario que tenga un punto y coma que termine la última línea de un bloque PHP.

¿Por qué menciono este tema?

Actualmente, yo y un amigo mío trabajamos en un proyecto de PHP propietario con MVC (model-view-controller). Para la vista, evalué algunos motores de plantillas PHP como Smarty, Moustache e incluso diseñé mi propio motor de plantillas propio. Pero cuando leí que PHP es un motor de plantillas en sí mismo, algo fue « clic » en mi cabeza. ¿Por qué no acordar en el equipo usar un subconjunto limitado de PHP como motor de plantillas? ¿Y tener muchas revisiones de código para mantener las reglas?

Y este subconjunto podría verse así:

  • Utilice solo etiquetas cortas <? , <?= y ?>
  • Use solo expresiones simples sin efectos secundarios, especialmente no asigne variables
  • Utilice solo if , foreach y include para las declaraciones
  • Utilice solo la sintaxis alternativa para las estructuras de control
  • Tener solo una declaración en una etiqueta cada

Este es el contexto en el que estamos omitiendo el punto y coma final, es decir, para <? endforeach ?> , <? endif ?> y <? include("list-contents.php") ?> .

Sin embargo, leo a menudo que omitir los puntos y comas de terminación es una mala práctica. ¿Por qué? ¿Es una mala práctica en absoluto?

Estoy contento de que PHP permita omitir el punto y coma de terminación porque esto minimiza el desorden visual en los archivos de plantilla. Deben parecerse a los archivos HTML con solo pequeños fragmentos de PHP aquí y allá. El ejemplo anterior es para lo que me estoy esforzando.

¿Qué piensas de esto? Si estás en contra, ¿por qué? Si lo apoyas: ¿Por qué sería una buena idea? ¿Qué debo decirle a mi compañero si él me está recomendando algún texto en contra de omitir el punto y coma?

Por favor respalde su opinión con hechos, referencias o su propia experiencia.

    
pregunta nalply 11.08.2012 - 21:11

3 respuestas

1

Creo que es una buena idea usar PHP, o al menos un subconjunto de, como lenguaje de plantilla. Será más fácil para los nuevos desarrolladores integrarse con su sistema, ya que no hay una sintaxis de biblioteca especial para aprender y usted no tiene la sobrecarga de esa biblioteca analizando su plantilla solo para convertirla en PHP.

También, se perdió un contexto en el que también tendría que eliminar el punto y coma final en sus declaraciones de eco variable, por ejemplo, %código%. Si no va a usar punto y coma en sus plantillas, entonces realmente no necesita usarlas. Claramente, su ejemplo de código no los usa, pero solo quería señalar el contexto faltante en el que no usar los puntos y comas de terminación.

Lo realmente importante es tener la participación del equipo y garantizar la coherencia en todas las plantillas. Personalmente, me parece discordante no tener el punto y coma ... Instintivamente quiero agregar esos puntos y coma en todas sus declaraciones de PHP. ¿Tiene una persona en su equipo con el mismo nivel de TOC? ¿Cómo van a reaccionar a esto? Si su equipo no tiene participación y una o dos personas se oponen con vehemencia, haga que defiendan su decisión, tal vez esta no sea la mejor manera de hacerlo.

Otra posible desventaja sería la incorporación de nuevos miembros del equipo. Es muy posible que no se den cuenta de que puedes hacer esto, regresa a tus plantillas e inserta todos los puntos y comas finales cuando sea apropiado. Obviamente, este es el caso de un desarrollador que no sabe tanto acerca de PHP como deberían, pero es algo que usted querría considerar en su decisión. Educando a los nuevos desarrolladores junior que en las plantillas no usamos punto y coma, sino otro código que hacemos.

tl; dr

Obtenga la aceptación de su equipo, asegúrese de que sus plantillas sean coherentes y tenga un plan razonable para educar a los nuevos desarrolladores sobre cómo el código PHP en las plantillas difiere del código PHP "normal" (sintaxis alternativa, sin punto y coma, se permite PHP) estructuras, etc).

    
respondido por el Charles Sprayberry 12.08.2012 - 16:24
2

Estoy a favor de omitirlos en este caso, y hago exactamente eso, específicamente porque en este contexto solo uso una instrucción de una sola línea por bloque. Reduce el desorden visual y en todos mis años de hacer esto, nunca ha resultado en un solo problema.

    
respondido por el Jonathan Patt 12.08.2012 - 16:03
0
  

Utilice solo etiquetas cortas

No. Por favor dios no! Confiar en las etiquetas cortas abiertas es una idea terrible. Solo hace que tu código sea menos portátil. Las etiquetas cortas abiertas no están habilitadas de forma predeterminada en muchos sistemas. ¿Y qué pasa si quiere compartir el código con alguien que los tiene desactivados? Además, nada se gana con las etiquetas cortas abiertas IMHO.

  

Utilice solo la sintaxis alternativa para las estructuras de control

No veo lo que obtendrías de eso. Además de no tener una base de código consistente.

  

Tener solo una declaración en una etiqueta cada uno

Eso también podría hacer las cosas desordenadas. Cuando tienes alguna "plantilla" llena de etiquetas abrir / cerrar en todas partes.

  

¿Por qué no solo acordamos en el equipo usar un subconjunto limitado de PHP como motor de plantilla?

Eso depende de quiénes estén en ese equipo. P.ej. ¿Sólo lo usará la gente que sepa PHP? O también tiene personas en ese equipo que necesitan cambiar las plantillas que no conocen PHP. Si es la primera vez, simplemente me relajaría en los requisitos (también conocido como reglas), porque cuando la gente tenga un problema, podrá resolverlo fácilmente con todo el poder que ofrece PHP y los limitará a resolverlo. Reglas o código muy desordenado. Sin embargo, si tienes personas en el equipo que no conocen PHP, podrías salirse con la suya de esa manera.

Ahora para responder tu pregunta:

  

Sin embargo, leo a menudo que omitir los puntos y comas de terminación es una mala práctica. ¿Por qué? ¿Es una mala práctica?

Al codificar (independientemente del idioma y del proyecto), siempre debe reducir el número de wtf por minuto en su código. Así que es una mala práctica porque cuando alguien mira que puede pensar al principio: ¡oye que algo es extraño allí! Es solo que se usa la gente de PHP que hay puntos y coma para cerrar declaraciones. Así que, de nuevo, esto puede depender de las personas de su equipo (pero usted solicitó su experiencia personal). Además de esto, también es muy muy molesto cambiar de sintaxis cuando las personas trabajan tanto en el frontend (las plantillas) como en el backend. Y es propenso tanto a errores como a molestias en el equipo.

Y, finalmente, sobre el hecho de que PHP te permite hacer algo: PHP te permite hacer todo tipo de cosas. Sólo este hecho no significa que debas usarlo. Hubo una publicación meta una vez en Stack Overflow que sobre Stack Overflow no es el ejemplo perfecto de sus propias reglas (o algo así) que también podría usarse para PHP. Hay todo tipo de cosas de FUBAR en PHP (sí, lo he dicho), pero eso no debería significar que debas decir: pero pero pero PHP lo permite. Adivina qué PHP también le permite ejecutar consultas sin saneamiento de entrada. PHP también le permite escribir todo el código en una sola línea. PHP también te permite hacer nombres de variables como $S0mEvAriBLe . Todas estas cosas no significan que es lo mejor que se puede hacer.

Mis 2 centavos

    
respondido por el PeeHaa 12.08.2012 - 16:43

Lea otras preguntas en las etiquetas