DEV Community

Rodrigo Sicarelli
Rodrigo Sicarelli

Posted on

Kotlin Koans BR: Argumentos nomeados

🔗 Tarefa

Faça com que a função joinOptions() retorne a lista em formato JSON (por exemplo, [a, b, c]) especificando apenas dois argumentos.

Você pode utilizar a função joinToString disponível na [stdlib (https://kotlinlang.org/api/latest/jvm/stdlib/):

fun joinToString( separator: String = ", ", prefix: String = "", postfix: String = "", /* ... */ ): String 
Enter fullscreen mode Exit fullscreen mode

Caso de uso

Ao se deparar com Argumentos nomeados em Kotlin, é possível imaginar colocando marcadores ou etiquetas em valores enviados para funções, tornando tudo mais compreensível e minimizando equívocos.

fun enviarEmail( de: String, para: String, assunto: String, ) = Unit 
Enter fullscreen mode Exit fullscreen mode

Normalmente, a função seria usada da seguinte maneira:

enviarEmail( "remetente@exemplo.com", "destinatario@exemplo.com", "Sobre a Reunião" ) 
Enter fullscreen mode Exit fullscreen mode

Mas quando nomeamos os argumentos, cada valor é especificado de maneira clara:

enviarEmail( de = "remetente@exemplo.com", para = "destinataria@exemplo.com", assunto = "Sobre a Reunião" ) 
Enter fullscreen mode Exit fullscreen mode

Definindo apenas o necessário

Digamos que só o assunto precisa ser definido, deixando o resto como padrão:

enviarEmail(assunto = "Cancelamento da Reunião") 
Enter fullscreen mode Exit fullscreen mode

Flexibilidade na organização

Mudar a ordem dos valores? Sem problemas, tudo continua entendível:

enviarEmail( assunto = "Lembrete", para = "area@example.com", de = "equipe@example.com" ) 
Enter fullscreen mode Exit fullscreen mode

Vantagens

  • Clareza nas chamadas de funções: nomear argumentos elimina qualquer dúvida sobre a correspondência entre os valores fornecidos e os parâmetros da função.
  • Flexibilidade: não há necessidade de seguir a ordem padrão dos parâmetros, permitindo focar apenas nos argumentos relevantes.
  • Redução e prevenção de erros: Ao nomear argumentos, se reduz a chance de passar acidentalmente um valor errado para um parâmetro.
  • Documentação implícita: o código se torna auto explicativo, reduzindo a necessidade de comentários adicionais para explicar a finalidade de cada valor.

Desvantagens

  • Manutenção de Nomeação: quando um nome de um parâmetro é alterado na definição da função, todos os argumentos que utilizam esse parâmetro precisam ser atualizados.
  • Verbosidade nas chamadas: em funções com muitos argumentos, nomear cada um pode tornar a chamada da função extensa e poluída.

Analogia

Imagine entrar em uma biblioteca cheia de livros, todos com a mesma capa e sem títulos na lombada. Você sabe que ali está o livro que você quer, mas como encontrar ele no meio de tantos iguais?

Isso é similar aos named arguments em Kotlin. Sem identificar bem os argumentos, a pessoa pode facilmente se perder, mesmo sabendo o que quer fazer. No entanto, com named arguments, tudo fica mais claro, como se cada livro tivesse sua própria capa e título.

Top comments (0)