Foros del Web » Programando para Internet » PHP »

Pregunta General

Estas en el tema de Pregunta General en el foro de PHP en Foros del Web. Hola compañeros del foro esta pregunta poco tiene que ver con php en si, pero si tiene que ver por que es sobre programacion, lo ...
  #1 (permalink)  
Antiguo 28/12/2006, 14:26
Avatar de dontripi  
Fecha de Ingreso: enero-2006
Mensajes: 240
Antigüedad: 18 años, 3 meses
Puntos: 1
Pregunta General

Hola compañeros del foro esta pregunta poco tiene que ver con php en si, pero si tiene que ver por que es sobre programacion, lo que pasa es que yo desarrollo sobre php y he visto que uso mucho los IF's para tomar muchas decisiones en mis aplicaciones, no se si esto es malo o es bueno, alguien que pudiera decirme si existe un limite para su uso o si uso execivo es perjudicial para la ejecucion de la aplicacion, en fin si alguien puede comentar algo me sería de gran ayuda, gracias por todo.


Att:


Dontripi
  #2 (permalink)  
Antiguo 28/12/2006, 14:47
 
Fecha de Ingreso: septiembre-2004
Ubicación: Santiago de Chile
Mensajes: 156
Antigüedad: 19 años, 7 meses
Puntos: 0
Re: Pregunta General

yo tambien los uso...
creo que alguien alguna vez me criticó porque dijo que programaba de manera "cotidiana" es decir comparado a mi vida diaria ej:
si como se me sacia el hambre, si tengo ganas de ir al baño, si tire la cadena, si sonrei.
osea una programación estructurada está orientada a tomar ejemplos "Cotidianos".
Esto no es lo mismo es POO donde he visto disminuido el uso de mis IF.
bueno esa es mi opinion... seria interesante que alguien mas aporte..

Saludos
  #3 (permalink)  
Antiguo 29/12/2006, 09:40
Avatar de dontripi  
Fecha de Ingreso: enero-2006
Mensajes: 240
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Pregunta General

quien mas se atreve a comentar
  #4 (permalink)  
Antiguo 29/12/2006, 09:46
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Re: Pregunta General

ES que tu pregunta es muy amplia, hay que ver en que momento es que utilizas muchas condiciones... a que llamas muchas condiciones, etc...

Quiza te ayude colocar un ejemplo de un codigo hecho por ti en el que utilices "muchas condiciones"...

Saludos.
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #5 (permalink)  
Antiguo 29/12/2006, 10:46
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo Re: Pregunta General

Siii!! Seria bueno que postearas un ejemplo, para que de esta forma pueda haber un mejor debate del tema

Si tienes un superbloque de if´s, lo que puedes hacer es usar switch(), y de esta forma estaria mucho "mejor" programado esa parte de tu código.

Saludillos.
  #6 (permalink)  
Antiguo 29/12/2006, 11:16
Avatar de dontripi  
Fecha de Ingreso: enero-2006
Mensajes: 240
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Pregunta General

bueno el codigo que les muestro aqui toma los valores de un mes
para un año determinado y lo esta comparando con el mismo mes pero en otro año
y esta diciendo que si alguno de los dos valores de las fechas es igual a cero
ponga el resultado de una vez en cero sino pues que haga lo que tiene que hacer


Código PHP:
if($sumvalen == OR $sumvalenant == 0)
              
$difvalene 0;            
            else 
             
$difvalene number_format(((($sumvalen/$sumvalenant)-1)*100),1,".",",")."%";
                 
                if(
$sumunden == OR $sumundenant == 0)
                   
$difuniene 0;
                else    
                 
$difuniene number_format(((($sumunden/$sumundenant)-1)*100),1,".",",")."%";
                 
                if (
$sumvalfeb == OR $sumvalfebant == 0)
                 
$difvalfeb 0;
                else 
                 
$difvalfeb number_format(((($sumvalfeb/$sumvalfebant)-1)*100),1,".",",")."%";
                 
                if(
$sumundfeb == OR $sumundfebant == 0)
                  
$difunifeb 0;
                else  
                 
$difunifeb number_format(((($sumundfeb $sumundfebant)-1)*100),1,".",",")."%";
                 
                if (
$sumvalmar == OR $sumvalmarant == 0)
                 
$difvalmar 0
                else 
                 
$difvalmar number_format(((($sumvalmar $sumvalmarant)-1)*100),1,".",",")."%";
                
                if (
$sumundmar == OR $sumundmarant == 0)
                 
$difunimar 0;
                else                 
                 
$difunimar number_format(((($sumundmar $sumundmarant)-1)*100),1,".",",")."%";
                 
                if (
$sumvalabr == OR $sumvalabrant == 0)
                 
$difvalabr 0;
                else 
                 
$difvalabr number_format(((($sumvalabr $sumvalabrant)-1)*100),1,".",",")."%";
                
                if (
$sumundabr == OR $sumundabrant == 0)
                 
$difuniabr 0;
                else 
                 
$difuniabr number_format(((($sumundabr $sumundabrant )-1)*100),1,".",",")."%";
                if (
$sumvalmay == OR $sumvalmayant == 0)
                 
$difvalmay 0;
                else 
                 
$difvalmay number_format(((($sumvalmay $sumvalmayant)-1)*100),1,".",",")."%";
                if (
$sumundmay == OR $sumundmayant == 0)
                 
$difunimay 0;
                else 
                 
$difunimay number_format(((($sumundmay $sumundmayant)-1)*100),1,".",",")."%";
                 
                if (
$sumvaljun == OR $sumvaljunant == 0)
                 
$difvaljun 0;
                else 
                 
$difvaljun number_format(((($sumvaljun $sumvaljunant)-1)*100),1,".",",")."%";
                 
                if (
$sumundjun == OR $sumundjunant == 0)
                 
$difunijun 0;
                else 
                 
$difunijun number_format(((($sumundjun $sumundjunant)-1)*100),1,".",",")."%";
                
                if (
$sumvaljul == OR $sumvaljulant == 0)
                 
$difvaljul 0;
                else 
                 
$difvaljul number_format(((($sumvaljul $sumvaljulant)-1)*100),1,".",",")."%";
                 
                if (
$sumundjul == OR $sumundjulant == 0)
                 
$difunijul 0;
                else 
                 
$difunijul number_format(((($sumundjul $sumundjulant)-1)*100),1,".",",")."%";
                 
                if (
$sumvalago == OR $sumvalagoant == 0)
                 
$difvalago 0;
                else 
                 
$difvalago number_format(((($sumvalago $sumvalagoant)-1)*100),1,".",",")."%";
                 
                if (
$sumundago == OR $sumundagoant == 0)
                 
$difuniago 0;
                else 
                 
$difuniago number_format(((($sumundago $sumundagoant)-1)*100),1,".",",")."%";
                 
                if (
$sumvalsep == OR $sumvalsepant == 0)
                 
$difvalsep 0;
                else 
                 
$difvalsep number_format(((($sumvalsep $sumvalsepant)-1)*100),1,".",",")."%";
                 
                if (
$sumundsep == OR $sumundsepant == 0)
                 
$difunisep 0;
                else 
                 
$difunisep number_format(((($sumundsep $sumundsepant)-1)*100),1,".",",")."%";
                 
                if (
$sumvaloct == OR $sumvaloctant == 0)
                 
$difvaloct 0;
                else 
                 
$difvaloct number_format(((($sumvaloct $sumvaloctant)-1)*100),1,".",",")."%";
                 
                if (
$sumundoct == OR $sumundoctant == 0)
                 
$difunioct 0;
                else 
                 
$difunioct number_format(((($sumundoct $sumundoctant)-1)*100),1,".",",")."%";
                
                if (
$sumvalnov == OR $sumvalnovant == 0)
                 
$difvalnov 0;
                else 
                 
$difvalnov number_format(((($sumvalnov $sumvalnovant)-1)*100),1,".",",")."%";
                
                if (
$sumundnov == OR $sumundnovant == 0)
                 
$difuninov 0;
                else                 
                 
$difuninov number_format(((($sumundnov $sumundnovant)-1)*100),1,".",",")."%";
                 
                if (
$sumvaldic == OR $sumvaldicant == 0)
                 
$difvaldic 0;
                else 
                 
$difvaldic number_format(((($sumvaldic $sumvaldicant)-1)*100),1,".",",")."%";
                
                if (
$sumunddic == OR $sumunddicant == 0)
                 
$difunidic 0;
                else 
                 
$difunidic number_format(((($sumunddic $sumunddicant)-1)*100),1,".",",")."%";
                 
                 
                 
$sumtotunddif = ($difuniene $difunifeb $difunimar $difuniabr $difunimay
                                   
$difunijun $difunijul $difuniago $difunisep $difunidoct 
                                   
$difuninov $difunidic);
                 
                 
                 
$sumtotvaldif = ($difvalene $difvalfeb $difvalmar $difvalabr $difvalmay
                                   
$difvaljun $difvaljul $difvalago $difvalsep $difvaldoct 
                                   
$difvalnov $difvaldic); 
pues ese es el codigo amigos espero me puedan decir algo gracias, de todos modos voy a evaluar
la posibilidad de utilizar switch de antemano muchas gracias por todo
  #7 (permalink)  
Antiguo 29/12/2006, 12:38
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Re: Pregunta General

Mmm, asi como se ve, parece algo aparatoso jeje. Pero no entiendo bien que tarea realiza, podrias explicar un poco mejor? parametros de entrada, parametros de salida (resultados).... quiza haya alguna forma mas simple de hacer lo que deseas, pero para eso debemos antes entender lo que deseas hacer.

Saludos.
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #8 (permalink)  
Antiguo 29/12/2006, 15:31
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Pregunta General

No es malo utilizarlos si están justificados y optimizados.
Un ejemplo simple es cuando se valida un dato de entrada haciendo:
Código PHP:
if( !empy($dato) ){
 ...
 
proceso
 
...
}else{
echo 
"error";

Para mi esta tarea, por ejemplo, es mejor así:
Código PHP:
if( empy($dato) ){ echo "error"; exit; }
proceso
... 
Pero el código que expresas es muy extenso como dice Federico como para leerlo en 1 min (tiempo que le doy a la lectura de un thread como máximo :P) y comprenderlo diciéndote si es correcto o no el uso de tantos ifs.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #9 (permalink)  
Antiguo 29/12/2006, 18:56
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Re: Pregunta General

Por cierto, no viene al caso, pero dejo este link que tiene unas pequeñas reglas para ser mas prolijos-claros, a la hora de escribir codigo con php.

Saludos.
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #10 (permalink)  
Antiguo 30/12/2006, 09:40
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 19 años, 6 meses
Puntos: 7
Re: Pregunta General

El problema en el ejemplo que has puesto no es tanto el abuso de los if, como que el código es muy poco mantenible. Si analizas tu código verás que haces lo mismo una y otra vez, en esencia, esto:
Código PHP:
if ($sumundabr == OR $sumundabrant == 0
                 
$difuniabr 0
                else  
                 
$difuniabr number_format(((($sumundabr $sumundabrant )-1)*100),1,".",",")."%"
Siempre que se vea que se está haciendo algo repetidamente, quiere decir que es mejor ponerlo en un bucle o convertirlo en una función, o, si es más complejo, convertirlo en una clase por que tu código será más reutilizable y mantenible. Imagínate que en un momento avanzado del desarrollo tienes que cambiar algo de uno de los pasos, para hacerlo deberías cambiar todas las veces donde está utilizado.

Lo mejor en este caso sería poner los datos en un array y a partir de ahí recorrerlo con un foreach y aplicar la operación que se repite y en cada uno de los pasos sumar el resultado a una variable.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:52.