Omitir terminar punto y coma en una etiqueta: ¿una buena idea?

8

Es posible omitir el punto y coma que termina 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>

Tenga en cuenta el <? endforeach ?>sin punto y coma después endforeach. La documentación de PHP dice:

La etiqueta de cierre de un bloque de código PHP implica automáticamente un punto y coma; no necesita tener un punto y coma que termina la última línea de un bloque PHP.

¿Por qué estoy trayendo este tema?

Actualmente, yo y un amigo mío trabajamos en un proyecto 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 hizo « clic » en mi cabeza. ¿Por qué no simplemente aceptar en el equipo utilizar 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 las etiquetas solamente cortos <?, <?=y?>
  • Use solo expresiones simples sin efectos secundarios, especialmente no asigne variables
  • Usar solo if, foreachy includepara declaraciones
  • Use 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 de terminación, es decir <? endforeach ?>, para <? endif ?>y <? include("list-contents.php") ?>.

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

Estoy feliz de que PHP permita omitir el punto y coma de terminación porque esto minimiza el desorden visual en los archivos de plantilla. Deberían verse principalmente como archivos HTML con solo pequeños fragmentos de PHP aquí y allá. El ejemplo anterior es por lo que me estoy esforzando.

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

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

finalmente
fuente

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 no tiene la sobrecarga de esa biblioteca analizando su plantilla solo para convertirla en PHP.

Además, se perdió un contexto en el que también necesitaría eliminar el punto y coma final en sus declaraciones de eco variable, por ejemplo <?= $receiver->name ?>. Si no va a usar punto y coma en sus plantillas, entonces realmente no debe usarlas. Claramente, su ejemplo de código no los usa, pero solo quería señalar el contexto que falta en el que no se deben usar puntos y comas.

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

Otro escollo potencial sería la incorporación de nuevos miembros del equipo. Es muy posible que no se den cuenta de que incluso puede hacer esto, vuelva a sus plantillas e inserte todos los puntos y comas de terminación cuando corresponda. Obviamente, este es un caso de un desarrollador que no sabe tanto sobre PHP como debería, pero es algo que querría sopesar en su decisión. Educar a los nuevos desarrolladores junior que en las plantillas no usamos punto y coma de terminación, sino otro código que hacemos.

tl; dr

Obtenga la aceptación de su equipo, asegúrese de que sus plantillas sean consistentes 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, punto y coma sin terminación, estructuras PHP permitidas, etc. )

Charles Sprayberry
fuente
2

Estoy a favor de omitirlos en este caso, y hago exactamente eso, específicamente porque en este contexto solo uso una declaració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.

Jonathan Patt
fuente
0

Use solo etiquetas cortas

No. Por favor dios no! Confiar en etiquetas abiertas cortas es una idea terrible. Solo hace que su código sea menos portátil. Las etiquetas abiertas cortas no están habilitadas de manera predeterminada en muchos sistemas. ¿Y si quieres compartir el código con alguien que lo tiene desactivado? Además, nada se gana de las etiquetas abiertas cortas en mi humilde opinión.

Use solo la sintaxis alternativa para las estructuras de control

No veo qué ganarías con eso. Además de no tener una base de código consistente.

Tener solo una declaración en una etiqueta cada

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

¿Por qué no simplemente aceptar en el equipo utilizar un subconjunto limitado de PHP como motor de plantillas?

Eso depende de quién esté en ese equipo. Por ejemplo, ¿solo lo usarán personas que conozcan PHP? ¿O también tiene personas en ese equipo que necesitan cambiar las plantillas que no conocen PHP? Si es el primero, simplemente me relajaría en los requisitos (también conocidos como reglas), porque cuando las personas enfrentan un problema, pueden resolverlo fácilmente con todo el poder que proporciona PHP y usted los limitará a resolverlo, ya sea que haya personas que rompan el problema reglas u obtener código muy desordenado. Sin embargo, si tiene personas en el equipo que no conocen PHP, podría salirse con la suya así.

Ahora para responder tu pregunta:

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

Al codificar (sin importar el idioma y el proyecto) siempre debe reducir la cantidad de wtf por minuto en su código. Por lo tanto, es una mala práctica porque cuando alguien mira eso, puede pensar al principio: ¡oye, hay algo extraño allí! Es solo que las personas PHP están acostumbradas a que haya punto y coma para cerrar las declaraciones. De nuevo, esto puede depender de las personas en su equipo (pero usted preguntó por su experiencia personal). Además de esto, también es muy muy molesto cambiar entre sintaxis cuando las personas trabajan tanto en el frontend (las plantillas) como en el backend. Y es propenso a errores y molestias en el equipo.

Y, por último, sobre el hecho de que PHP te permite hacer algo: PHP te permite hacer todo tipo de cosas. Solo este hecho no significa que debas usarlo. Hubo una meta publicación una vez en Stack Overflow que dice que 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 FUBAR en PHP (sí, lo he dicho), pero eso no debería significar que debas decir: pero pero PHP lo permite. Adivina qué PHP también te permite ejecutar consultas sin sanidad de entrada. PHP también le permite escribir todo el código en una sola línea. PHP también le permite crear nombres de variables como $S0mEvAriBLe. Todas estas cosas no significan que sea lo mejor que se puede hacer.

Mis 2 centavos

PeeHaa
fuente
Permítanme comentar sus puntos: 1) Sintaxis alternativa porque la creación de plantillas HTML es un ámbito diferente al de «PHP normal». Quiero enfatizar esto con diferentes construcciones. 2) Solo una declaración en una etiqueta porque las vistas son principalmente HTML con solo un pequeño código PHP. 3) Limitar el poder de PHP debido a la separación de preocupaciones. En las vistas, nada sobre la aplicación se decide, calcula o consulta. Es la tarea del controlador junto con el modelo. Arruinaría la separación si alguien usa todo el poder de PHP en una vista. Gracias por su respuesta. Es útil.
finalmente