Névterek nevei
Feljegyzés
Ezt a tartalmat a Pearson Education, Inc. engedélyével nyomtatjuk újra a Framework Design Guidelines: Conventions, Idioms és Patterns for Reusable .NET Libraries, 2nd Edition engedélyével. Ezt a kiadást 2008-ban adták ki, és a könyvet azóta teljesen átdolgozták a harmadik kiadásban. Előfordulhat, hogy az oldalon található információk némelyike elavult.
Más elnevezési irányelvekhez hasonlóan a névterek elnevezésének célja, hogy a programozó a keretrendszer használatával egyértelművé teszi a névtér tartalmát. Az alábbi sablon a névterek elnevezésének általános szabályát adja meg:
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
Az alábbi parancsok példák:
Fabrikam.Math
Litware.Security
✔️ DO előtag névtérnevek cégnévvel, hogy megakadályozzák, hogy a különböző vállalatok névterei azonos nevet viseljenek.
✔️ A DO egy stabil, verziófüggetlen terméknevet használ a névtérnév második szintjén.
❌ NE használjon szervezeti hierarchiákat a névtérhierarchiákban szereplő nevek alapjául, mivel a vállalatokon belüli csoportnevek általában rövid élettartamúak. Rendszerezheti a névterek hierarchiáját a kapcsolódó technológiák csoportjai köré.
✔️ DO használja a PascalCasingot, és különítse el a névtér összetevőit pontokkal (pl. Microsoft.Office.PowerPoint
). Ha a márka nem hagyományos burkolatot használ, akkor a márka által meghatározott burkolatot kell követnie, még akkor is, ha eltér a normál névtérháztól.
✔️ Fontolja meg a többes névtérnevek használatát, ha szükséges.
Például használja ahelyett, hogy System.Collections
System.Collection
. A szabály alól azonban kivételt képeznek a márkanevek és a betűszók. Például használja ahelyett, hogy System.IO
System.IOs
.
❌ NE használja ugyanazt a nevet egy névtérhez és egy típushoz az adott névtérben.
Ne használjon Debug
például névtérnévként, és adjon meg egy osztályt Debug
is ugyanabban a névtérben. Számos fordító megköveteli, hogy az ilyen típusok teljes mértékben minősítettek legyenek.
Névterek és típusnévütközések
❌ NE vezessen be általános típusneveket, például Element
, Node
, Log
és Message
.
Nagyon nagy a valószínűsége annak, hogy ez a gyakori forgatókönyvekben típusnévütközésekhez vezet. Az általános típusneveknek (FormElement
, XmlNode
, , EventLog
) SoapMessage
kell megfeleltetnie.
A névterek különböző kategóriái esetében a típusnévütközések elkerülésére külön irányelvek vonatkoznak.
Alkalmazásmodell-névterek
Az egyetlen alkalmazásmodellhez tartozó névtereket gyakran használják együtt, de szinte soha nem használják őket más alkalmazásmodellek névtereivel. A névteret például System.Windows.Forms nagyon ritkán használják a System.Web.UI névtérrel együtt. Az alábbi lista jól ismert alkalmazásmodell-névtércsoportokat tartalmaz:
System.Windows*
System.Web.UI*
❌ NE adja meg ugyanazt a nevet az egyetlen alkalmazásmodell névtereinek típusainak.
Például ne adjon hozzá névtérhez elnevezett
Page
System.Web.UI.Adapters típust, mert a System.Web.UI névtér már tartalmaz egy elnevezettPage
típust.Infrastruktúra-névterek
Ez a csoport olyan névtereket tartalmaz, amelyeket ritkán importálnak a közös alkalmazások fejlesztése során. A névtereket például
.Design
főként programozási eszközök fejlesztésekor használják. Az ilyen névterek típusaival való ütközések elkerülése nem kritikus fontosságú.Alapvető névterek
Az alapvető névterek tartalmazzák az összes
System
névteret, kivéve az alkalmazásmodellek és az infrastruktúra-névterek névtereit. Az alapvető névterek közé tartoznak többek között aSystem
,System.IO
,System.Xml
ésSystem.Net
a .❌ NE adjon olyan típusneveket, amelyek ütköznének a Core névterekben lévő bármely típussal.
Például soha ne használjon
Stream
típusnévként. Ez ütközne egy nagyon gyakran használt típussal System.IO.Stream.Technológiai névtércsoportok
Ez a kategória tartalmazza az összes névteret ugyanazzal az első két névtércsomóponttal
(<Company>.<Technology>*
, példáulMicrosoft.Build.Utilities
ésMicrosoft.Build.Tasks
. Fontos, hogy az egyetlen technológiához tartozó típusok ne ütközjenek egymással.❌ NE rendeljen olyan típusneveket, amelyek ütköznének más, egyetlen technológián belüli típussal.
❌ NE vezessen be típusnévütközéseket a technológiai névterek típusai és az alkalmazásmodellek névterei között (kivéve, ha a technológiát nem az alkalmazásmodellhez kívánják használni).
© Részletek 2005, 2009 Microsoft Corporation. Minden jog fenntartva.
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, published 22, 2008 by Addison-Wesley Professional, a Microsoft Windows Development Series részeként.