Condividi tramite


Tipi annidati

Nota

Questo contenuto è ristampato con l'autorizzazione di Pearson Education, Inc. da Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Tale edizione è stata pubblicata nel 2008 e il libro è stato interamente revisionato nella terza edizione. Alcune delle informazioni contenute in questa pagina potrebbero non essere aggiornate.

Un tipo annidato è un tipo definito nell'ambito di un altro tipo, denominato tipo di inclusione. Un tipo annidato ha accesso a tutti i membri del relativo tipo di inclusione. Ad esempio, ha accesso ai campi privati definiti nel tipo di inclusione e ai campi protetti definiti in tutti gli ascendenti del tipo di inclusione.

In generale, i tipi annidati devono essere usati con moderazione. Le ragioni sono molteplici. Alcuni sviluppatori non hanno familiarità con il concetto. Questi sviluppatori, ad esempio, potrebbero avere problemi con la sintassi della dichiarazione di variabili di tipi annidati. I tipi annidati sono anche molto strettamente associati ai relativi tipi di inclusione e, di conseguenza, non sono adatti per essere tipi generici.

I tipi annidati sono più adatti per i dettagli di implementazione della modellazione dei relativi tipi di inclusione. L'utente finale deve raramente dichiarare le variabili di un tipo annidato e quasi mai deve dover creare un'istanza esplicita dei tipi annidati. Ad esempio, l'enumeratore di una raccolta può essere un tipo annidato di tale raccolta. Gli enumeratori vengono in genere create tramite un'istanza del tipo di inclusione e poiché molte lingue supportano l'istruzione foreach, le variabili enumeratore raramente devono essere dichiarate dall'utente finale.

✔️ USARE tipi annidati quando la relazione tra il tipo annidato e il relativo tipo esterno è tale che la semantica di accessibilità dei membri sia auspicabile.

❌ NON usare tipi annidati pubblici come costrutto di raggruppamento logico; usare gli spazi dei nomi per questo.

❌ EVITARE i tipi annidati esposti pubblicamente. L'unica eccezione è se le variabili del tipo annidato devono essere dichiarate solo in rari scenari, ad esempio la sottoclasse o altri scenari di personalizzazione avanzata.

❌ NON usare tipi annidati se è probabile che al tipo venga fatto riferimento all'esterno del tipo contenitore.

Ad esempio, un'enumerazione passata a un metodo definito in una classe non deve essere definita come tipo annidato nella classe.

❌ NON usare tipi annidati se è necessario creare un'istanza dal codice client. Se un tipo ha un costruttore pubblico, probabilmente non deve essere annidato.

Se è possibile creare un'istanza di un tipo, ciò sembra indicare che il tipo ha una posizione nel framework autonoma (è possibile crearlo, usarlo e distruggerlo senza mai usare il tipo esterno), e quindi non deve essere annidato. I tipi interni non devono essere ampiamente riutilizzati all'esterno del tipo esterno senza alcuna relazione con il tipo esterno.

❌ NON definire un tipo annidato come membro di un'interfaccia. Molti linguaggi non supportano un costrutto di questo tipo.

Parti protette da copyright © 2005, 2009 Microsoft Corporation. Tutti i diritti sono riservati.

Ristampato con l'autorizzazione di Pearson Education, Inc. da Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2a edizione di Krzysztof Cwalina and Brad Abrams, pubblicato il 22 ottobre 2008 da Addison-Wesley Professional nella collana Microsoft Windows Development Series.

Vedi anche