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

Retorno da data formatada

Nesse caso, por que não utilizar a própria model de transação para retornar já a data formatada? Isso vai contra as boas práticas?

Ex.:

class Transacao (val valor: BigDecimal,
                 val categoria: String,
                 val data : Calendar){

    //formata a data dentro do objeto para facilitar o seu retorno
    fun getData(): String{
        val formato = "dd/MM/yyyy"
        val format = SimpleDateFormat(formato)
        val dataFormatada = format.format(data.time)
        return dataFormatada
    }
}
1 resposta
solução!

Oi Gustavo, tudo bem?

Pode utilizar o próprio modelo sem nenhum problema, inclusive é uma abordagem bem comum de ser feita. Entretanto tenho algumas observações pela amostra que apresentou:

  1. Nome do método: deixaria com mais descrição para indicar que vai devolver uma data no formato brasileiro, afinal está sendo realizada uma formatação específica.

  2. Reutilização: da maneira como fez, apenas o modelo Transacao será capaz de usufruir dessa lógica que, dependendo do que for adicionar no projeto, poderia ser reaproveitada.

Pensando justamente nesses detalhes, criar a Extension Function é bem benéfico, pois é possível reutilizar esse comportamento em uma instância genérica de data como é o caso da API do Calendar.

Respondendo a sua última pergunta: não é uma má prática o que você apresentou como solução, porém, é importante saber o impacto que tem e como pode deixar o seu código mais flexível.

De uma maneira resumida: recomendo que faça a Extension Function para formatar a data e ser reutilizada onde for necessário, matenha a função da classe Transacao para que ela mesmo saiba formata a sua data, mas deixe o nome mais descritivo para que seja clçlaro o suficiente sobre o que está sendo retornado (uma data num formato brasileiro) e, dentro dela, faça uso da Extension Function.

Se tiver alguma dúvida é só falar.

[]s