Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

[Dúvida] [Dúvida] Propriedade Autoimplementada x Variável

Olá, boa noite.

Nessa aula, foi dito que seria uma falha de segurança, deixarmos acessível externamente a variável declarada dentro de uma classe. Gostaria de entender um pouco melhor, porque não temos esse mesmo problema, quando deixamos uma propriedade exposta.

O argumento utilizado no vídeo, foi que um outro desenvolvedor poderá atribuir um valor "inválido" a essa variável. Contudo, pelo que entendi, deixando a propriedade como publica, um outro desenvolvedor também poderá fazer essa atribuição.

Obrigado!

5 respostas

Olá, Rodrigo. Tudo bom?

Recomendo a leitura da documentação oficial para você saber com mais detalhes como funcionam as propriedades autoimplementadas. Mas, basicamente, se você quiser restringir o acesso ao get ou set, basta utilizar a palavra private na frente

public string Nome { get; set; }

vira

public string Nome { get; private set; }

Dessa forma, você consegue acessar o valor da variável, mas não consegue altera-lo.

Obrigado pela dica Rodrigo, vou dar uma nessa documentação.

Mas o intuito da pergunta, foi em relação a observação de ser uma falha de segurança, deixar a variável publica e exposta para que um outro desenvolvedor, possa atribuir um valor a ela. E foi dado como solução a esse problema de segurança, o uso da propriedade pública. Por isso, gostaria de entender por que no primeiro caso é uma falha de segurança e no segundo não.

Então, eu acho que o instrutor ter deixado tudo como public no vídeo enquanto falava de segurança foi simplesmente um equívoco da parte dele mesmo. Até enquanto falava ele citou que precisaria ser privado para solucionar a questão. Mas posso estar enganado. De qualquer forma, deixando o set como private "é o mesmo" que declarar como privado. Só que você continua tendo acesso ao get, que não consegue alterar o valor.

solução!

Bom dia Rodrigos, tudo bom?

Muito bacana as discussões, mas sim a idéia foi a príncípio apresentar o conceito de propriedades autoimplementadas, mas como recomendação, sugere-se que as váriaveis (campos) sejam privados e acessadas por propriedades (para melhorar segurança), ai podemos definir o nível de operação "private set;" por exemplo.

Abraços e bons estudos 😄


Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Blz, obrigado Pessoal.