Algunas formas de usar IF sin llaves {} 🛇 (Sin Frameworks)

  • Autor Autor zcriptz
  • Fecha de inicio Fecha de inicio
Es importante no dar malos consejos a programadores iniciados, recomendamos usar el lenguaje de programación de forma sana y no arrastrar malos hábitos que pueden llegar a ser errores a la hora de programar.

Saludos

Por algo te considero el mejor programador <3
 
Es importante no dar malos consejos a programadores iniciados, recomendamos usar el lenguaje de programación de forma sana y no arrastrar malos hábitos que pueden llegar a ser errores a la hora de programar.

Saludos

En el ejemplo que me diste con un OR se puede continuar, y sino en todo caso la función que se carga en el medio debería cargarse al final o bien devolver true...

No tiene sentido una función en el medio que devuelve false, es un ejemplo muy especifico.
 
La gente que usa frameworks normalmente no utiliza if a no se que por fuerza mayor sea necesario. utilizan los assertions.
 
1587367733472.png


PHP 7.4 NTS MSVC15 (Visual C++ 2017) x64 no funciona tu método, ( Sacando error )

por otro lado en 7.2 funciona la prueba de rendimiento es la siguiente

Prueba 1 ( normal )
test_IfElse : 0.423 sec.

Prueba 2 ( Sin Simbolos )
test_IfElse : 0.644 sec.


Ademas, Visual Studio Code marca como no recomendable el código.

PD
la prueba exacta fue esta:

1587368229507.webp


ya que en el ejemplo tuyo era igual o al menos no se notaba la perdida de rendimiento porque era 2 up
y 2 up.
 
Última edición:
Complemento mi comentario para decir que en vuestro IDE, instaléis un plugin llamado PSR, esto os obligará a utilizar a seguir un estándar de la programación, y así dejar de lado el código spagettis y adentrarse en el código limpio, otro consejo más que os doy a la hora de desarrollar en un framework, hacerlo siempre con el patron “inyección de dependencia” ya que el día de mañana si queréis cambiar a otro framework no tendréis problema alguno o pasar a otra versión del framework.
 
Complemento mi comentario para decir que en vuestro IDE, instaléis un plugin llamado PSR, esto os obligará a utilizar a seguir un estándar de la programación, y así dejar de lado el código spagettis y adentrarse en el código limpio, otro consejo más que os doy a la hora de desarrollar en un framework, hacerlo siempre con el patron “inyección de dependencia” ya que el día de mañana si queréis cambiar a otro framework no tendréis problema alguno o pasar a otra versión del framework.

si tuve que desactivar IntelliSense para que no jodiera el mensaje. pero igual en php 7.4 a mi no me ha servido su ejemplo
 
De todas maneras me parece que si no quieres un if con llaves siempre puedes hacer esto:
(condicion) ? (sentencia de true) : (sentencia de false) ;

Pero tampoco es para abusar de ello, yo lo utilizo en momentos muy especificos, en cuanto a rendimiento no se sera mejor
 
De todas maneras me parece que si no quieres un if con llaves siempre puedes hacer esto:
(condicion) ? (sentencia de true) : (sentencia de false) ;

Pero tampoco es para abusar de ello, yo lo utilizo en momentos muy especificos, en cuanto a rendimiento no se sera mejor

Operadores ternarios siempre es una buena idea. son mas óptimos.
 
De todas maneras me parece que si no quieres un if con llaves siempre puedes hacer esto:
(condicion) ? (sentencia de true) : (sentencia de false) ;

Pero tampoco es para abusar de ello, yo lo utilizo en momentos muy especificos, en cuanto a rendimiento no se sera mejor

PHP:
<?php
echo 'Version PHP: '.phpversion();
$start = microtime(true);
$c = 100000000;

echo "<br><br>Corriendo el script $c veces<br><br>";
for($i = 0; $i < $c; $i++)
    if(0)
        print(1)
    ;else if(0)
        print(2)
    ;else
        $hola = 1
            AND
        is_int('a')
            OR
        is_int($i)
            AND
        $i++
    ;
;
echo 'Sin llaves: '.number_format(microtime(true)-$start, 4).'<br><br>';


$start = microtime(true);
$c = 100000000;
for($i = 0; $i < $c; $i++){
    if(0){
        print(1);
    }else if(0){
        print(2);
    }else{
        $hola = 1;
        if(!is_int('a')){
            is_int($i);
        }
        $i++;
    }
}
echo 'Con llaves: '.number_format(microtime(true)-$start, 4).'<br><br>';

$start = microtime(true);
for($i = 0; $i < $c; $i++)
    0
    ?
        print(1)
    :
        0
        ?
            print(2)
        :
            $hola = 1
                AND
            is_int('a')
                OR
            is_int($i)
                AND
            $i++
    ;
;
echo 'Con "?:": '.number_format(microtime(true)-$start, 4).'<br><br>';

?>

Operadores ternarios siempre es una buena idea. son mas óptimos.

Version PHP: 7.2.29

Corriendo el script 100000000 veces

Sin llaves: 1.0734

Con llaves: 0.6427

Con "?:": 0.8932

__________________________________


Version PHP: 7.2.29

Corriendo el script 100000000 veces

Sin llaves: 0.9997

Con llaves: 0.5397

Con "?:": 0.8704

__________________________________

Version PHP: 7.2.29

Corriendo el script 100000000 veces

Sin llaves: 1.0153

Con llaves: 0.5526

Con "?:": 0.8808
 
Última edición:
yo igual prefiero usar monad's y olvidarme de los problemas

ejemplo

1587369910078.webp


1587369918537.webp


(Logics )

1587369944848.webp


f\ if($status === $_type), true, false : return;
 
@Farok, @Mask7OfDragon

Me había faltado el "$start = microtime(true)".

Actualizados los tiempos.
 
¿No sería más sencillo usarlo así si es que no quieres usar llaves?:

PHP:
if ([Condicional]):
    ...
    ...
else:
    ...
    ...
endif;

Igual prefiero no usar frameworks en la mayoría de casos, más que nada porque buena parte de lo que suelo programar no se ajusta siempre al los frameworks viables de usar. El proyecto no tiene porqué ajustarse al framework, sino a la inversa.

kj
 
Version PHP: 7.2.29

Corriendo el script 100000000 veces

Sin llaves: 1.0664

Con llaves: 0.5326
¿No sería más sencillo usarlo así si es que no quieres usar llaves?:

PHP:
if ([Condicional]):
    ...
    ...
else:
    ...
    ...
endif;

Igual prefiero no usar frameworks en la mayoría de casos, más que nada porque buena parte de lo que suelo programar no se ajusta siempre al los frameworks viables de usar. El proyecto no tiene porqué ajustarse al framework, sino a la inversa.

kj

Cierto ya me había olvidado!! 😱

Creo que voy a tener que hacer otro tema (? 😂

Tuve que cambiar el título. 😯
 
Complemento mi comentario para decir que en vuestro IDE, instaléis un plugin llamado PSR, esto os obligará a utilizar a seguir un estándar de la programación, y así dejar de lado el código spagettis y adentrarse en el código limpio, otro consejo más que os doy a la hora de desarrollar en un framework, hacerlo siempre con el patron “inyección de dependencia” ya que el día de mañana si queréis cambiar a otro framework no tendréis problema alguno o pasar a otra versión del framework.

Antes que usar un plugin, considero que es mejor aprender dichos "estándares" (PSR solo son recomendaciones), no es que sean muchas o difíciles de recordar y luego ver si aplicando o no.

Lo digo por experiencia haciendo lo mismo con el plugin "standart" para javascript y me ha quedado grabado a fuego de que a no ser que si o si tengas que pasar por algo tipo TravisCI, por lo general el código te quedará más legible y funcionando correctamente si aprendes y aplicas lo que consideres de esas recomendaciones de como hacer un código limpio, en lugar de delegar ese trabajo a una extensión.

Lo de inyección de dependencia no es la primera vez que lo leo (bueno, en español si), lo anoto para leerlo, ya que aunque no use frameworks casi nunca, si que los llego a usar alguna vez y no está nada mal aprender a usarlo, aunque casi siempre las cosas que hago es en trabajos ya terminados que hay que arreglarles algo.

kj
 
Última edición:
En mi puta vida voy a dejar de usar { } en php, el único lugar donde me permito usarlo es en un echo para tener el código mas limpio, como por ejemplo agregar una clase:

Insertar CODE, HTML o PHP:
'.((isset($test) AND !empty($test == "value"))?'class="test"':"").'

Yo considero un programador de bajo nivel cuando me empieza a nombrar Frameworks, librerías para hacer x cosa porque le parece mas sencillo agregar un fichero que pesa 50 mb para hacer la misma cosa con 2 lineas de código.
 
Depende de como lo quieras usar, pero es bueno utilizar desde el vamos sentencias que ayuden al script que estas realizando (apoyando lo que menciona @marcofbb mas arriba -aqui- ), a que con el pasar del tiempo quede obsoleto/de errores (o modificaciones o nuevas versiones del php).

Soy mas de usar (condicion) ? (sentencia de true) : (sentencia de false) ; como dijo @Farok mas arriba, pero siempre y cuando lo amerite.

Pero claro esta @zcriptz que se aprecia el aporte 😉
 
Depende de como lo quieras usar, pero es bueno utilizar desde el vamos sentencias que ayuden al script que estas realizando (apoyando lo que menciona @marcofbb mas arriba -aqui- ), a que con el pasar del tiempo quede obsoleto/de errores (o modificaciones o nuevas versiones del php).

Soy mas de usar (condicion) ? (sentencia de true) : (sentencia de false) ; como dijo @Farok mas arriba, pero siempre y cuando lo amerite.

Pero claro esta @zcriptz que se aprecia el aporte 😉

Acabo de agregar una cuarta opción pero sin IF.

Gracias @vicram10 👍
 
en pocas palabras

PHP:
v_bool = true;
v_variable = v_bool ? 'Hola' : 'Chau';
echo v_variable;
 
¿No sería más sencillo usarlo así si es que no quieres usar llaves?:

PHP:
if ([Condicional]):
    ...
    ...
else:
    ...
    ...
endif;

Igual prefiero no usar frameworks en la mayoría de casos, más que nada porque buena parte de lo que suelo programar no se ajusta siempre al los frameworks viables de usar. El proyecto no tiene porqué ajustarse al framework, sino a la inversa.

kj

Fantásticos puntos de vista muchas gracias a todos el conocimiento es grande 😉

jajaj ni me acordaba brother, me acostumbre tanto a las llaves que no usarlas se me hace extraño. Pero también depende del lenguaje de programación por ejemplo c# o java que se necesitan las llaves en concordancia python o visual basic net que no son necesarias... Aunque también como programadores tenemos que adaptarnos a los cambios y al futuro.

El caso también seria debatir que % de beneficio trae usar o no llaves.. Cual es el rendimiento y el consumo real final....También por ejemplo si se trabaja en un proyecto grupal, en fin muchas variables.

Ya el caso de la escritura es muy curioso por que php es muy versátil ... Me llamo mucho la atención como llaman a las funciones.

Aun así seria bueno poner a en duda el código escrito en pruebas de rendimiento benchmark, seguir la documentación oficial bueno por algo existe no? y finalmente dirigirse como decirse al núcleo de todo a la madre xD es decir al código de fuente de php que esta en github de ahí revisar como se interpreta php y sacar conclusiones, sin embargo en este ultimo tendrán que tener cocimiento avanzado del lenguaje de programación padre como lo es c

Por cierto a mi tampoco me gustan los frameworks pero que más se puede hacer son los más usados en la actualidad, las empresas los solicitan y son muy buenos para el trabajo en equipo....
 
Última edición:
Atrás
Arriba