Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Usar os outros métodos seria uma prática ruim?

Resolvi da seguinte maneira:

class Conta {
    var titular = ""
    var numero = 0
    var saldo = 0.0

    fun deposito (valor: Double) {
        saldo += valor
    }

    fun saque (valor: Double) {
        if (saldo >= valor) {
            saldo -= valor
        } else {
            println("Saldo insuficiente")
        }
    }

    fun transferencia (destino: Conta, valor: Double) {
        this.saque(valor)
        destino.deposito(valor)
    }
}

Minha dúvida é: minha solução seria considerada uma "má prática"?

1 resposta
solução!

Olá Rubi, tudo bem com você?

Muito legal a sua solução! De forma alguma é uma má prática, é considerado inclusive uma boa prática, pois aumenta o nível de abstração do código e já utiliza as verificações dos próprios métodos saque() e deposito() para verificar se a transferência pode ser feita ou não! É uma solução bastante elegante, pois reaproveita código, tornando desnecessário fazer a mesma verificação em dois lugares diferentes, e aumenta a legibilidade do código!

Tem apenas uma ressalva: o código transferencia vai funcionar perfeitamente, enquanto o comportamento de saque e deposito forem exatamente esses. Em casos que esses comportamentos podem mudar, talvez seja interessante fazer a lógica do método transferencia dentro do próprio método, pois caso sejam adicionadas novas regras de négocio que afetem, por exemplo, o saque, e não a transferência, da maneira que o código está, acabaria afetando a transação de transferência também!

No entanto, caso seja certo de que essas regras de negócio permanecerão as mesmas, é uma solução bastante interessante!

Um grande abraço e bons estudos!