4
respostas

return valor e return this._valor

Boa tarde, gostaria de saber o porque de utilizar o return valor no método sacar abaixo, pois o this.saldo já foi alterado, o correto não seria utilizar return this.saldo como no método depositar?

    sacar(valor){
        if(this._saldo >= valor){
           this._saldo -= valor;
           return valor;
        }

    depositar(valor){
        if(valor<=0){
            return;
        }else{
        this._saldo += valor   
        }
    }
    }
4 respostas

Fala ai Alisson, tudo bem? Depende muito da regra de negócio da aplicação, a função sacar está retornando o valor que foi sacado, já a depositar não está retornando nada.

Por mim eu acho que a função sacar também não deveria retornar nada.

Espero ter ajudado.

Alisson, também fiquei pensando nisso. Não sei se você já chegou nesta parte do curso, mas o instrutor cria uma método de transferir dinheiro entre as contas, que seria esse aqui:

    tranferir(valor, conta){

        const valorSacado = this.sacar(valor);
        conta.depositar(valorSacado);

    }

Percebe que ele armazena em uma constante o return do método sacar(), que seria o próprio valor que ele deseja transferir. Depois disso ele chama o método depositar(valorSacado) com a constante que ele armazenou o valor da transferência.

Mas por que não usar direto a variável "valor" que o próprio método recebe como parâmetro ? Pelo o que eu entendi, o método sacar(), antes de retirar o dinheiro da conta, ele verifica se tem saldo na conta , por isso que ele faz essa verificação e retorna novamente o valor que ele deseja sacar. Se colocasse a variável "valor" diretamente no método depositar(), ele não iria fazer essa verificação, e o saldo poderia ficar negativo.

Boa noite,

sacar(valor){        
    if(this._saldo >= valor){                   
        this._saldo -= valor;
    }else{
        console.log("Saldo insuficiente");
    }
}

transferir(valor, conta){
    this.sacar(valor);
    conta.depositar(valor);
}

Desta forma também funcionaria perfeitamente, acredito que é apenas uma questão de raciocínio diferente;

Espero ter ajudado.

Da também para fazer um early return na própria transferir ^^

transferir(valor, recebedor){
        if (valor<this._saldo){
            console.log("Você não tem saldo suficiente para essa transferência");  
            return
        }
        const valorsacado = this.sacar(valor);
        recebedor.depositar(valorsacado);
    }