Foro de elhacker.net

Programación => Java => Mensaje iniciado por: theluigy13etv en 11 Octubre 2012, 04:51 am



Título: ¿Quería saber si mi código es muy redundante o está bien así?
Publicado por: theluigy13etv en 11 Octubre 2012, 04:51 am
Bueno, he estado revisando el libro de Deitel y otros manuales y de allí he empezado a tomar un estilo propio de programación; quiero mostrarles la forma como estoy empezando a programar mis clases en Java. El problema que tengo es que a veces me parece que es muy redundante o que estoy llenando mi código de demasiadas llamadas a métodos y constructores lo cual creo que traería como consecuencia que el programa sea un poco más lento, pero por otro lado hace que mi código sea más ordenado y fácil de entender, bueno, quiero sus opiniones y tal vez alguna otra forma más elegante de hacerlo.

Les presento a manera de ejemplo muy sencillo la definición de dos clases: Clase Persona y Clase Alumno.

Código
  1. public class Persona {
  2.   // Atributos privados
  3.    private String nombre;
  4.    private int edad;    
  5.  
  6.    public Persona() {        
  7.        this(null, 0);        
  8.    }        
  9.  
  10.    public Persona(String nombre) {        
  11.        this(nombre, 0);
  12.    }
  13.  
  14.    public Persona(String nombre, int edad) {
  15.        super();    // Llamada explícita al constructor de la clase Object
  16.        setNombre(nombre);
  17.        setEdad(edad);
  18.    }
  19.  
  20.    public void setNombre(String nombre) {
  21.        this.nombre = nombre;
  22.    }
  23.  
  24.    public void setEdad(int edad) {
  25.        this.edad = edad;
  26.    }
  27.  
  28.    public String getNombre() {
  29.        return nombre;
  30.    }
  31.  
  32.    public int getEdad() {
  33.        return edad;
  34.    }
  35.  
  36.    public String toString() {
  37.        return String.format("%s: %s\n%s: %d\n",
  38.            "Nombre", getNombre(),
  39.            "Edad", getEdad());
  40.    }  
  41. }
  42.  

Código
  1. public class Alumno extends Persona {    
  2.    private String codigo;
  3.  
  4.    public Alumno() { this(null, 0, null); }
  5.  
  6.    public Alumno(String nombre) {
  7.        this(nombre, 0, null);
  8.    }
  9.  
  10.    public Alumno(String nombre, int edad) {
  11.        this(nombre, edad, null);
  12.    }        
  13.  
  14.    public Alumno(String nombre, int edad, String codigo) {
  15.        super(nombre, edad);      // Llamada al constructor de la superclase directa  
  16.        setCodigo(codigo);
  17.    }
  18.  
  19.    public void setCodigo(String codigo) {
  20.        this.codigo = codigo;
  21.    }
  22.  
  23.    public String getCodigo() {
  24.        return codigo;
  25.    }
  26.  
  27.    public String toString() {
  28.        return String.format("%s%s: %s\n", super.toString(),
  29.            "Código", getCodigo());
  30.    }
  31. }
  32.  


Título: Re: ¿Quería saber si mi código es muy redundante o está bien así?
Publicado por: ed0810 en 11 Octubre 2012, 04:54 am
Tu código cumple perfectamente los estándares de programación, sólo documéntalo cuando tengas métodos algo complejos, o aún cuando te parezcan simples, un mes después de programar a ver si nos acordamos de lo que hicimos :D


Título: Re: ¿Quería saber si mi código es muy redundante o está bien así?
Publicado por: FrostLeviathan en 11 Octubre 2012, 23:40 pm
No veo necesario tener estos constructores:
Código
  1.    public Persona() {        
  2.        this(null, 0);        
  3.    }        
  4.  
  5.    public Persona(String nombre) {        
  6.        this(nombre, 0);
  7.    }
  8.  
ya que no veo que sea algo util y puede generar errores en el futuro tener Personas sin nombre y/o edad. Lo mismo con la clase Alumno.


Título: Re: ¿Quería saber si mi código es muy redundante o está bien así?
Publicado por: theluigy13etv en 12 Octubre 2012, 20:12 pm
No veo necesario tener estos constructores:
Código
  1.    public Persona() {        
  2.        this(null, 0);        
  3.    }        
  4.  
  5.    public Persona(String nombre) {        
  6.        this(nombre, 0);
  7.    }
  8.  
ya que no veo que sea algo util y puede generar errores en el futuro tener Personas sin nombre y/o edad. Lo mismo con la clase Alumno.

Sí, creo que tienes razón, no tendría sentido que exista un alumno sin un código o una persona sin un DNI o nombre.


Título: Re: ¿Quería saber si mi código es muy redundante o está bien así?
Publicado por: sapito169 en 12 Octubre 2012, 23:43 pm
el codigo esta bien

no hay necesidad para crear un constructor de esa manera por que el compilador te lo crea de todas maneras

si tiene sentido Por que la persona pasa de un estado de tener dni a un estado de no tenerlo

es mejor quieres tener validacion pongas un metod que valide

class Alumno ..{
...
     boolean esValido(){
    ..
    }
}