correcta aplicação dos modificadores de acesso
-
11-09-2019 - |
Pergunta
Eu sou um estudante à procura de recursos que podem me ajudar a entender melhor como aplicar corretamente modificadores de acesso para membros / tipos de código que eles.
Eu sei (em C #) que restrições de acesso modificadores como privado, público, protegido, etc. colocar no lugar. Quando eu codificar meus próprios projetos pequenos que têm uma tendência a apenas fazer tudo público. Estou certo de que esta é uma prática absolutamente horrível como ele só joga encapsulamento para fora da janela. Eu apenas nunca sabe quando é correto usar algo como vs. interna privada.
Alguém tem alguma bons recursos para me ajudar na compreensão do uso apropriado dos modificadores de acesso?
Solução
Esta é uma questão tipo de experiência. Iniciar a partir do nível de privilégio mínimo e promover-se, se necessário.
Em outras palavras, tornar tudo privado. Até você descobrir que ele precisa ser promovido a protegida ou pública. Com o tempo você vai começar uma sensação para os usos descobertos pretendidos e posteriores de suas classes.
Outras dicas
Eu simplesmente fazer o acesso de tudo o mais restritivo possível:
- Privada por padrão
- Caso contrário interna, se é uma API exposta a outras classes dentro desta montagem
- Ou, público se é uma API exposta fora da montagem
- Ou, protegido se ele é destinado a ser chamado apenas de subclasses.
Comece colocando tudo privado. Se você sente a necessidade, alterar o modificador de conformidade, até que você tenha a sensação de escolher o tipo certo.
Para facilitar as coisas, tente usar TDD , ou você pode entrar em mesmo mais problemas quando você começa a testes de unidade de gravação ...
Qualquer tipo de material tutorial ou de ensino vai lhe dar a mesma orientação, ou seja, o que os outros publicar já te dei. Então, não espere muita informação útil nesta matéria específica de "recursos".
O principal recurso que vai além do que é o código que outras pessoas escreveram. Tome um grande projeto C # (por exemplo Mono , ou SharpDevelop ), e estudar como eles especificamente seguiu os princípios que têm sido explicado a você. Além disso, se você tem uma classe específica para projetar, tente pensar de uma classe similar nas bibliotecas do sistema, e tentar descobrir como ele é implementado (seja por olhar para a fonte de Mono, ou usando o refletor NET).
Você deve começar a pensar sobre a interface de uma classe, que é o conjunto necessário e suficiente de rotinas que precisa para expor a fim de alcançar seu objetivo. Faça esse público. Tudo o resto deve ser privado.
Eu tenho uma tendência a fazer tudo protegido que não é público. Deixando a liberdade de meus usuários para fazer o que quiser com a minha turma. Se os intervalos de classe que seria seu problema.
Cada vez que você herdar de uma classe que você precisa saber como ele funciona mesmo se oop é sobre como ocultar a implementação. Você pode ocultar a implementação, mas você não vai esconder a documentação.