0
respostas

[Sugestão] Extension functions x member functions

Não dava pra responder o tópico já existente do André por ter sido criado há mais de um mês, então criei um novo. Eu também estava em dúvida sobre por que escrever o criaGamer como uma extension function ao invés de já escrever dentro da própria classe, então eu pesquisei a respeito e vi essas três razões para se escolher criar uma função como extension:

  1. Manter o código dentro da classe fazendo apenas coisas essenciais do contexto dela. No caso de uma data class, faz sentido que ela só sirva para entregar dados crus (neste caso, dados do json do gamer), sem nenhuma lógica de negócio de fato dentro dela.

  2. Não criar dependências desnecessárias. Considerando que a criaGamer serve apenas para adicionar uma conveniência, que é o retorno de um outro objeto construído com propriedades da classe, pode ser melhor criar essa função num arquivo separado para deixar o código da classe mais enxuto, sem que uma classe esteja necessariamente amarrada a outra (nesse projetinho pequeno não faz diferença, mas em um grande, ou em uma biblioteca que possa ser compartilhada, faz sentido).

  3. Extension functions são um pouco mais eficientes por serem baseadas em tempo de compilação (já que não acessam o objeto diretamente), enquanto member functions são baseadas em tempo de execução (seu acesso depende do tempo de vida do objeto dentro da execução do programa)

O que acham? Espero que ajude outras pessoas que tenham essa dúvida.