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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top