-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Buenas, te dejo algunos comentarios:
- Por convención, los métodos en Java (y por consecuencia, los tests también, porque son métodos) se escriben en
camelCase
- Ojo con los múltiples constructores de Cuenta.
Cuenta
tiene 2 constructores, y si el código cliente quiere usar la clase, cómo sabes que constructor deberías usar? Tengo que entrar a la clase a mirar el código, o puedo terminar creando un objeto con un estado inadecuado. Tambien se puede delegar la lógica de un constructor en otro. Cuenta.setMovimientos
se debería eliminar, ya que nunca se usa y expone estado mutable innecesariamente.- En la clase Cuenta, en
getMovimientos().stream().filter(movimiento -> movimiento.fueDepositado(LocalDate.now())).count() >= 3
hay mucha lógica algoritmica. Qué significa esta línea? Qué está haciendo? Podrías mejorar la declaratividad generando una abstracción para darle entidad. - En los tests
ExtraerMasQueElSaldo()
yExtraerMasDe1000()
declarás variables que no usás. Intentá borrar todo el código que no se esté usando. - Hay algo de lógica repetida en estos métodos, en las primeras líneas de cada uno.
DDS-Monedero/src/main/java/dds/monedero/model/Cuenta.java
Lines 61 to 84 in 4c78528
private void validarOperacionPoner(double saldo){ if (saldo <= 0) { throw new MontoNegativoException(saldo + ": el monto a ingresar debe ser un valor positivo"); } if (getMovimientos().stream().filter(movimiento -> movimiento.fueDepositado(LocalDate.now())).count() >= 3 ) { throw new MaximaCantidadDepositosException("Ya excedio los " + 3 + " depositos diarios"); } } private void validarOperacionSacar(double saldo){ if (saldo <= 0) { throw new MontoNegativoException(saldo + ": el monto a ingresar debe ser un valor positivo"); } if (getSaldo() - saldo < 0) { throw new SaldoMenorException("No puede sacar mas de " + getSaldo() + " $"); } double montoExtraidoHoy = getMontoExtraidoA(LocalDate.now()); double limite = 1000 - montoExtraidoHoy; if (saldo > limite) { throw new MaximoExtraccionDiarioException("No puede extraer mas de $ " + 1000 + " diarios, límite: " + limite); } }
En estos otros métodos tenemos lógica repetida en las últimas 2 líneas de cada uno.
DDS-Monedero/src/main/java/dds/monedero/model/Cuenta.java
Lines 29 to 39 in 4c78528
public void poner(double cuanto) { validarOperacionPoner(cuanto); this.setSaldo(this.getSaldo() + cuanto); this.movimientos.add(new Movimiento(LocalDate.now(), cuanto, true)); } public void sacar(double cuanto) { validarOperacionSacar(cuanto); this.setSaldo(this.getSaldo() - cuanto); this.movimientos.add(new Movimiento(LocalDate.now(), cuanto, false)); } - En la clase Movimiento hay un flag booleano esDeposito que habilita varios type-tests que hacés en tu código, y además, oculta las abstracciones de depósitos y extracciones. Deberías eliminarlo (o al menos hacerlo calculado y restringir su uso) subclasificando los movimientos.
Saludos!
Metadata
Metadata
Assignees
Labels
No labels