Este repositorio contiene el código de un monedero virtual, al que podemos agregarle y quitarle dinero, a través
de los métodos Monedero.sacar
y Monedero.poner
, respectivamente.
Pero hay algunos problemas: por un lado el código no está muy bien testeado, y por el otro, hay numeros code smells.
Tenés seis tareas:
- 🍴 Hacé un repositorio usando este template (presionando desde Github el botón use this template)
- ⬇️ Descargalo y construí el proyecto, utilizando
maven
- 👃 Identificá y anotá todos los code smells que encuentres
- 🧪 Agregá los tests faltantes y mejorá los existentes.
- 👀 Ojo: ¡un test sin ningún tipo de aserción está incompleto!
- ⛑️ Corregí smells, de a un commit por vez.
- ⬆️ Subí todos los cambios a tu fork
- 🐛 Activá los issues de Github desde https://github.com/TU_GITHUB_USERNAME/dds-monedero-java8/settings así podemos darte nuestras devoluciones
- Java 8.
- JUnit 5.
⚠️ La versión 5 de JUnit es la más nueva del framework y presenta algunas diferencias respecto a la versión "clásica" (JUnit 4). Para mayores detalles, ver: - Maven 3.3 o superior
- Duplicated code en
Cuenta
poner
ysacar
if (cuanto <= 0) {
throw new MontoNegativoException(cuanto + ": el monto a ingresar debe ser un valor positivo");
}
- Numeros Magicos en
Cuenta
:
double limite = 1000 - montoExtraidoHoy;
if (getMovimientos().stream().filter(movimiento -> movimiento.isDeposito()).count() >= 3) {
- Long Method en
Cuenta
poner
ysacar
- Message Chain en
Cuenta
getMontoExtraidoA
movimiento.getFecha().equals(fecha)
- Misplaced Method en
Movimiento
agregateA
public void agregateA(Cuenta cuenta) {
cuenta.setSaldo(calcularValor(cuenta));
cuenta.agregarMovimiento(fecha, monto, esDeposito);
}
- Type Test y Misplaced Method en
Movimiento
calcularValor
public double calcularValor(Cuenta cuenta) {
if (esDeposito) { // type test
return cuenta.getSaldo() + getMonto();
} else {
return cuenta.getSaldo() - getMonto();
}
}