Diretrizes de projeto de tipo
Da perspetiva do CLR, existem apenas duas categorias de tipos — tipos de referência e tipos de valor — mas, para fins de discussão sobre design de estrutura, dividimos os tipos em grupos mais lógicos, cada um com suas próprias regras de design específicas.
As classes são o caso geral dos tipos de referência. Eles constituem a maior parte dos tipos na maioria das estruturas. As classes devem sua popularidade ao rico conjunto de recursos orientados a objetos que suportam e à sua aplicabilidade geral. Classes base e classes abstratas são grupos lógicos especiais relacionados à extensibilidade.
Interfaces são tipos que podem ser implementados por tipos de referência e tipos de valor. Podem, assim, servir como raízes de hierarquias polimórficas de tipos de referência e tipos de valores. Além disso, as interfaces podem ser usadas para simular herança múltipla, o que não é suportado nativamente pelo CLR.
Structs são o caso geral de tipos de valor e devem ser reservados para tipos pequenos e simples, semelhantes aos primitivos de linguagem.
Enums são um caso especial de tipos de valor usados para definir conjuntos curtos de valores, como dias da semana, cores de console e assim por diante.
Classes estáticas são tipos destinados a serem contêineres para membros estáticos. Eles são comumente usados para fornecer atalhos para outras operações.
Delegados, exceções, atributos, matrizes e coleções são todos casos especiais de tipos de referência destinados a usos específicos, e as diretrizes para seu design e uso são discutidas em outra parte deste livro.
✔️ CERTIFIQUE-SE de que cada tipo seja um conjunto bem definido de membros relacionados, não apenas uma coleção aleatória de funcionalidades não relacionadas.
Nesta secção
Escolhendo entre classe e estrutura
Design de classe abstrato
Design de classe estática
Interface Design
Projeto Struct
Enum Design
Tipos aninhados
© 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.