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)