Dela via


Fältdesign

Kommentar

Det här innehållet skrivs om med behörighet från Pearson Education, Inc. från Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Den utgåvan publicerades 2008, och boken har sedan dess reviderats helt i den tredje utgåvan. En del av informationen på den här sidan kan vara inaktuell.

Inkapslingsprincipen är en av de viktigaste begreppen inom objektorienterad design. Den här principen anger att data som lagras i ett objekt endast ska vara tillgängliga för det objektet.

Ett användbart sätt att tolka principen är att säga att en typ ska utformas så att ändringar i fält av den typen (namn eller typändringar) kan göras utan att någon annan kod än för medlemmar av typen bryts. Den här tolkningen innebär omedelbart att alla fält måste vara privata.

Vi exkluderar konstanta och statiska skrivskyddade fält från den här strikta begränsningen, eftersom sådana fält nästan per definition aldrig behöver ändras.

❌ ANGE INTE instansfält som är offentliga eller skyddade.

Du bör ange egenskaper för åtkomst till fält i stället för att göra dem offentliga eller skyddade.

✔️ Använd konstanta fält för konstanter som aldrig ändras.

Kompilatorn bränner värdena för const-fält direkt till anropande kod. Därför kan const-värden aldrig ändras utan risk för kompatibilitetsbrott.

✔️ Använd offentliga statiska readonly fält för fördefinierade objektinstanser.

Om det finns fördefinierade instanser av typen deklarerar du dem som offentliga skrivskyddade statiska fält av själva typen.

❌ Tilldela INTE instanser av föränderliga typer till readonly fält.

En föränderlig typ är en typ med instanser som kan ändras när de har instansierats. Matriser, de flesta samlingar och strömmar är till exempel föränderliga typer, men System.Int32, System.Urioch System.String är alla oföränderliga. Den skrivskyddade modifieraren i ett referenstypfält förhindrar att instansen som lagras i fältet ersätts, men det förhindrar inte att fältets instansdata ändras genom att medlemmar ändrar instansen.

Portioner © 2005, 2009 Microsoft Corporation. Med ensamrätt.

Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, publicerad 22 okt 2008 av Addison-Wesley Professional som en del av Microsoft Windows Development Series.

Se även