1
resposta

Boas práticas

É uma boa prática sempre criar uma lista colocando como Collection? E caso precisamos de comportamentos mais específicos ir descendo o nível?

1 resposta

Olá, Cauã!

É uma boa prática criar uma lista como Collection quando precisamos de comportamentos mais genéricos e, caso seja necessário, ir descendo o nível para obter comportamentos mais específicos. Isso permite que você tenha flexibilidade ao lidar com diferentes tipos de coleções.

No contexto do curso Kotlin Collections: Set e Map, é explicado que existem dois tipos de coleções: read only (somente leitura) e mutable (mutável). As referências mutable permitem a modificação dos valores, enquanto as referências read only não permitem.

Ao utilizar uma referência mutable, como o mutable list, você pode adicionar e remover elementos da lista. Porém, é importante tomar cuidado para não expor a coleção mutável diretamente, pois isso pode quebrar os princípios da orientação a objetos, como o encapsulamento.

Uma abordagem recomendada é restringir o acesso à coleção mutável, tornando-a privada. Em seguida, você pode criar uma property que retorna uma coleção de leitura apenas, para que os usuários do código possam ler os elementos, mas não modificá-los diretamente.

Por exemplo, você pode ter um banco de nomes que utiliza uma lista mutável para armazenar os nomes. No entanto, em vez de expor a lista mutável, você pode criar uma property chamada "nomes" que retorna uma coleção de leitura apenas. Dessa forma, os usuários do código só poderão ler os nomes, mas não adicionar ou remover diretamente.

class BancoDeNomes {
    private val nomes = mutableListOf<String>()

    val nomesReadOnly: Collection<String>
        get() = nomes

    fun adicionarNome(nome: String) {
        nomes.add(nome)
    }
}

Dessa forma, você pode adicionar nomes ao banco de nomes usando o método "adicionarNome", mas os usuários do código só poderão ler os nomes através da property "nomesReadOnly".

Lembre-se de que essa é apenas uma sugestão de abordagem e você pode adaptá-la de acordo com suas necessidades específicas. Espero ter ajudado e bons estudos!