Namen van naamruimten
Notitie
Deze inhoud wordt opnieuw afgedrukt door toestemming van Pearson Education, Inc. van Framework Design Guidelines: Conventions, Idioms en Patterns for Reusable .NET Libraries, 2nd Edition. Die editie werd in 2008 gepubliceerd en het boek is sindsdien volledig herzien in de derde editie. Sommige informatie op deze pagina is mogelijk verouderd.
Net als bij andere naamgevingsrichtlijnen is het doel bij het benoemen van naamruimten voldoende duidelijkheid voor de programmeur met behulp van het framework om onmiddellijk te weten wat de inhoud van de naamruimte waarschijnlijk is. Met de volgende sjabloon wordt de algemene regel voor naamruimten opgegeven:
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
Hier volgen enkele voorbeelden:
Fabrikam.Math
Litware.Security
✔️ Naamruimtenamen van DO-voorvoegsel met een bedrijfsnaam om te voorkomen dat naamruimten van verschillende bedrijven dezelfde naam hebben.
✔️ GEBRUIK EEN stabiele, versie-onafhankelijke productnaam op het tweede niveau van een naamruimtenaam.
❌ GEBRUIK geen hiërarchieën van organisaties als basis voor namen in naamruimtehiërarchieën, omdat groepsnamen binnen bedrijven meestal kortlevend zijn. Organiseer de hiërarchie van naamruimten rond groepen gerelateerde technologieën.
✔️ DO use PascalCasing, and separate namespace components with periods (bijvoorbeeld Microsoft.Office.PowerPoint
). Als uw merk gebruikmaakt van niet-raditionele behuizingen, moet u de behuizing volgen die door uw merk is gedefinieerd, zelfs als het afwijkt van normale naamruimtebehuizing.
✔️ OVERWEEG waar nodig meervoudsnaamruimtenamen te gebruiken.
Gebruik bijvoorbeeld System.Collections
in plaats van System.Collection
. Merknamen en acroniemen zijn echter uitzonderingen op deze regel. Gebruik bijvoorbeeld System.IO
in plaats van System.IOs
.
❌ Gebruik niet dezelfde naam voor een naamruimte en een type in die naamruimte.
Gebruik bijvoorbeeld niet Debug
als naamruimtenaam en geef vervolgens ook een klasse op met de naam Debug
in dezelfde naamruimte. Voor verschillende compilers moeten dergelijke typen volledig zijn gekwalificeerd.
Naamruimten en typenaamconflicten
❌ INTRODUCEER GEEN algemene typenamen zoals Element
, Node
, Log
en Message
.
Er is een zeer hoge kans dat dit leidt tot typenaamconflicten in veelvoorkomende scenario's. U moet de algemene typenamen (FormElement
, XmlNode
, EventLog
, ). SoapMessage
Er zijn specifieke richtlijnen voor het voorkomen van typenaamconflicten voor verschillende categorieën naamruimten.
Naamruimten van toepassingsmodel
Naamruimten die deel uitmaken van één toepassingsmodel worden vaak samen gebruikt, maar ze worden bijna nooit gebruikt met naamruimten van andere toepassingsmodellen. De naamruimte wordt bijvoorbeeld System.Windows.Forms zelden samen met de System.Web.UI naamruimte gebruikt. Hier volgt een lijst met bekende naamruimtegroepen voor toepassingsmodellen:
System.Windows*
System.Web.UI*
❌ Geef niet dezelfde naam aan typen in naamruimten binnen één toepassingsmodel.
Voeg bijvoorbeeld geen type toe met de System.Web.UI.Adapters naamruimte
Page
, omdat de System.Web.UI naamruimte al een type met de naamPage
bevat.Infrastructuurnaamruimten
Deze groep bevat naamruimten die zelden worden geïmporteerd tijdens het ontwikkelen van algemene toepassingen. Naamruimten worden bijvoorbeeld
.Design
voornamelijk gebruikt bij het ontwikkelen van programmeerhulpprogramma's. Het voorkomen van conflicten met typen in deze naamruimten is niet essentieel.Kernnaamruimten
Kernnaamruimten bevatten alle
System
naamruimten, met uitzondering van naamruimten van de toepassingsmodellen en de infrastructuurnaamruimten. Kernnaamruimten zijn onder andere,System
,System.IO
, enSystem.Xml
System.Net
.❌ Geef geen typen namen die conflicteren met elk type in de Core-naamruimten.
Gebruik bijvoorbeeld nooit
Stream
als een typenaam. Het zou conflicteren met System.IO.Stream, een zeer gangbaar type.Technologienaamruimtegroepen
Deze categorie bevat alle naamruimten met dezelfde eerste twee naamruimteknooppunten
(<Company>.<Technology>*
), zoalsMicrosoft.Build.Utilities
enMicrosoft.Build.Tasks
. Het is belangrijk dat typen die tot één technologie behoren, niet met elkaar conflicteren.❌ Wijs geen typenamen toe die conflicteren met andere typen binnen één technologie.
❌ INTRODUCEER GEEN typenaamconflicten tussen typen technologienaamruimten en een naamruimte van een toepassingsmodel (tenzij de technologie niet is bedoeld voor gebruik met het toepassingsmodel).
© Delen 2005, 2009 Microsoft Corporation. Alle rechten voorbehouden.
Herdrukt door toestemming van Pearson Education, Inc. van Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published oct 22, 2008 by Addison-Wesley Professional als onderdeel van de Microsoft Windows Development Series.