Partilhar via


Design de Campo

Nota

Este conteúdo é reimpresso com permissão da Pearson Education, Inc., a partir de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Essa edição foi publicada em 2008 e, desde então, o livro foi totalmente revisto na terceira edição. Algumas das informações nesta página podem estar desatualizadas.

O princípio do encapsulamento é uma das noções mais importantes no design orientado a objetos. Este princípio estabelece que os dados armazenados dentro de um objeto devem ser acessíveis apenas a esse objeto.

Uma maneira útil de interpretar o princípio é dizer que um tipo deve ser projetado de modo que as alterações nos campos desse tipo (alterações de nome ou tipo) possam ser feitas sem quebrar o código exceto para os membros do tipo. Esta interpretação implica imediatamente que todos os campos devem ser privados.

Excluímos campos somente leitura constantes e estáticos desta restrição estrita, porque tais campos, quase por definição, nunca são obrigados a mudar.

❌ NÃO forneça campos de instância que sejam públicos ou protegidos.

Você deve fornecer propriedades para acessar campos em vez de torná-los públicos ou protegidos.

✔️ USE campos constantes para constantes que nunca serão alteradas.

O compilador grava os valores dos campos const diretamente no código de chamada. Portanto, os valores const nunca podem ser alterados sem o risco de quebrar a compatibilidade.

✔️ DO use campos estáticos públicos para instâncias de readonly objeto predefinidas.

Se houver instâncias predefinidas do tipo, declare-as como campos estáticos somente leitura públicos do próprio tipo.

❌ NÃO atribua instâncias de tipos mutáveis a readonly campos.

Um tipo mutável é um tipo com instâncias que podem ser modificadas depois de serem instanciadas. Por exemplo, matrizes, a maioria das coleções e fluxos são tipos mutáveis, mas System.Int32, System.Urie System.String são todos imutáveis. O modificador somente leitura em um campo de tipo de referência impede que a instância armazenada no campo seja substituída, mas não impede que os dados da instância do campo sejam modificados chamando membros que alteram a instância.

© Partes 2005, 2009 Microsoft Corporation. Todos os direitos reservados.

Reimpresso com permissão da Pearson Education, Inc., de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition por Krzysztof Cwalina e Brad Abrams, publicado em 22 de outubro de 2008 por Addison-Wesley Professional como parte da Microsoft Windows Development Series.

Consulte também