1
resposta

[Sugestão] E se criar uma extension?

Para deixar o código da service mais simples, dá para criar uma extension num arquivo chamado TopicoExtensions e criar uma função que converte para um TopicoView, desse forma:

//Dentro do arquivo TopicoExtensions
// !! para informar ao compilador que o id não será nulo
// = TopicoView... para realizar o retorno na mesmo linha
fun Topico.toView() = TopicoView(this.id!!, this.titulo, this.mensagem, this.status, this.dataCriacao)

Na service:

 fun listar(): List<TopicoView> {
        return topicos.map { topico -> topico.toView() } 
    }

 fun buscarPorId(id: Long): TopicoView {
       return topicos.first { topico -> topico.id == id }.toView()
 }

As extensions ensinadas na formação da linguagem caem bem aqui ou não?

1 resposta

Oi Jelson. Tudo bem?

Sua sugestão é muito válida e certamente pode simplificar o código da service. As extensions são uma funcionalidade muito útil do Kotlin e podem ser aplicadas em muitos contextos, inclusive neste.

A sua sugestão de criar uma função de extensão que converte um Topico para um TopicoView é uma ótima ideia. Isso torna o código mais limpo e mais fácil de entender. Além disso, essa abordagem é mais idiomática para Kotlin, que incentiva o uso de funções de extensão para adicionar funcionalidades a classes existentes sem precisar alterar seu código-fonte.

Um abraço e bons estudos.