Ver Mensaje Individual
  #15 (permalink)  
Antiguo 10/07/2003, 13:55
josemi
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Concepto basico: el constructor solo sirve para inicializar el objeto: dar valores iniciales a las propiedades y demas tareas de inicializacion. Pero no debe devolver nada. En lenguajes compilados te daria un error de compilacion poner un return en un constructor.

Entonces pon un constructor que inicialice las propiedades (pon a 0 los operandos y el resultado, especifica que no esta en error). El calculo lo haces en los otros metodos y usas el return.

Cluster tiene razon con lo de devolver FALSE en caso de error, pero le ha fallado la implementacion. Recuerda que 0 se evalua como FALSE, asi que tendrias que comparar explicitamente y estrictamente (===) con FALSE, ya que creo que 0 es un valor valido que puede retornar el metodo.

Webstudio tiene razon en la implementacion de calcular2(), pero no solo es un fallo de diseño en OOP, tambien en el mundo estructurado (funciones) se intenta reutilizar el codigo. Mas que nada es por mantenimiento. Imaginate que modificas como se realiza el calculo. Si tienes el codigo solo en un metodo, los posibles bugs solo pueden estar en ese trozo de codigo. Si lo tienes puesto en muchos lugares, tendrias que tener cuidado de mantener todos esos trozos iguales en todos los sitios, y eso a veces con las prisas es muy dificil. Asi que para facilitar la vida de los de amntenimiento, repitas codigo innecesariamente.

En lo que no estoy de acuerdo en este caso concreto con Webstudio es con eso de tener una funcion sumar(). Me parece complicar el codigo para una operacion sencilla. Es conocido el termino KISS (Keep It SImple, Stupid: Mantenlo sencillo, no seas estupido). Creo que en este caso aumentaria la complejidad del diseño. En este caso, claro. Si ahora me dices que en lugar de solo hacer operaciones con numeros decimales, tambien va a hacer esas operaciones, pero los operandos pueden ser numeros complejos, en ese caso ya admito que exista una funcion sumar() que se comporte de una forma diferente sea unos operandos decimales o complejos.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.