Foros del Web » Programación para mayores de 30 ;) » Java »

mejorar codigo

Estas en el tema de mejorar codigo en el foro de Java en Foros del Web. Hola que tal , esoty realizando un aplicacion como un semaforo, tengo una clase con unas variables que apuntas hacia norte , sur, este , ...
  #1 (permalink)  
Antiguo 09/02/2019, 11:52
 
Fecha de Ingreso: junio-2011
Mensajes: 64
Antigüedad: 7 años, 9 meses
Puntos: 0
mejorar codigo

Hola que tal , esoty realizando un aplicacion como un semaforo, tengo una clase con unas variables que apuntas hacia norte , sur, este , oeste, con sus respectivos semaforos y luces.
:
El metodo es el siguiente cuando estado es 0 todos los semaforos estan en rojo, si estado es 1 norte y sur son verdes y este y oeste son rojos y asi .......
private void coloursemaforo() {
int estado =0;
if(this.estado==0){

Norte.ajustaColor(Color.Rojo);
Sur.ajustaColor(Color.Rojo);
Este.ajustaColor(Color.Rojo);
Oeste.ajustaColor(Color.Rojo);
}else if (this.statdo==1){

Norte.ajustaColor(Color.Verde);
Sur.ajustaColor(Color.Verde);
Este.ajustaColor(Color.Rojo);
Oeste.ajustaColor(Color.Rojo);

}else if (this.state==2){

Norte.ajustaColor(Color.Naranja);
Sur.ajustaColor(Color.Naranja);
Este.ajustaColor(Color.Rojo);
Oeste.ajustaColor(Color.Rojo);

}else if (this.stado==3){
Norte.ajustaColor(Color.Rojo);
Sur.ajustaColor(Color.Rojo);
Este.ajustaColor(Color.Verde);
Oeste.ajustaColor(Color.Verde);


}else if (this.stado==4){
Norte.ajustaColor(Color.Rojo);
Sur.ajustaColor(Color.Rojo);
Este.ajustaColor(Color.Naranja);
Oeste.ajustaColor(Color.Naranja);

}
}


Hay alguna menera de mejorar este codigo, tengo la impresion que estoy repitiendo codigo?
  #2 (permalink)  
Antiguo 09/02/2019, 14:20
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.492
Antigüedad: 10 años, 7 meses
Puntos: 188
Respuesta: mejorar codigo

Descontando el tema de los convenios de notación y la nomenclatura erronea de tu variable en alguno de los casos, el mayor problema que le veo es que tal y como está definido siempre va a entrar por el primer if.

Por cierto, eso se presta más a un switch case que a un if - else if.

y luego puedes crear un método que le pasas parejas [objeto,color] y recorres esas parejas y vas ejecutando objeto.ajustaColor(color) para cada una.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}



La zona horaria es GMT -6. Ahora son las 07:57.