webForumDet fria alternativet

namespace- och klassnamn

.NET

6 svar · 658 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

Hur döper ni egentligen era namespace och klasser?
Jag kan inte bestämma mig hur jag vill ha det, eller hur det borde vara! :OO
Låt säga att man har en denna filstruktur:
/AppRoot/Admin/Modules/Forum/View.aspx

Jag har då två alternativ till namn, kanske har ni fler! :)

namespace [Client].[Application].Web.UI
{
     public partial class Admin_Modules_Forum_View [i]//alt. AdminModulesForumView[/i]
     {
     }
}

eller

namespace [Client].[Application].Web.UI.Admin.Modules.Forum
{
     public partial class View
     {
     }
}

Finns det några direkta för/nackdelar med alternativen?

Medlem sedan juni 20003 076 inlägg
#2

Kom på ett tredje alternativ och kanske det bästa! :)
Att namespace och klass inte har nått med mappsökvägen att göra!

namespace [Client].[Application].Web.UI
{
     public partial class ForumView
     {
     }
}
Medlem sedan jan. 20022 440 inlägg
#3
namespace Company.Application.WebClient
{
}

namespace Company.Shared.Utitlies
{
}

namespace Company.Application.WebService
{
}

Det viktigaste är väl egentligen att du har rätt namespace på saker som ligger i undermappar tex. ska ju filer i application-root/SomeLogic ska ju i så fall få namespaces

namespace Company.Application.SomeLogic
{

}

Försök undvika _ (understreck) i namngivning av klasser och metoder. De fyller ingen som helst funktion. AdminUserSection tycker jag själv är lättare att tyda än Admin_User_Section. Du smutsar ner koden med _... IMHO

Medlem sedan okt. 200850 inlägg
#4

Enligt MS guidelines, om jag nu mins rätt :p

Så ska man döpa namespace till följande:

företag.produkt.subprodukt.osv

Tex:

Microsoft.Office.Word.Templates

Under Templates samlar man klasser som har med templates att göra..

Ska man följa MS guidelines när det gäller namn på klasser så är det efter PascalCalsing.. så inte "_" för " ", utan allt ska sitta ihop.

/Fredrik Normén
MVP - MEET -ASPInsiders

http://weblogs.asp.net/fredriknormen

Medlem sedan juni 20003 076 inlägg
#5

Hmm, jag är ändå lite förbryllad! :)
Om man tar exemplet Forum. Som jag bygger idag så skulle Forumet innehålla tre delar (om man räknar bort data access): BusinessObjects, BusinessLogics samt UI.
Det skulle då ge strukturen:

namespace [Client].[App].BusinessObjects
{
     public class Forum
     {
          public int ID...
     }
}

namespace [Client].[App].BusinessLogics
{
     public class BLForum
     {
          public Forum GetById(int id)...
     }
}

Men sen, en aspx sida som visar forumtrådar, vad heter den klassen och i vilket namespace läggs den?
Alla har väl gjort ett forum nån gång! :) Vad heter eran klass/namespace?

Medlem sedan jan. 20022 440 inlägg
#6

Den ligger ju i presentationslagrets namespace

namespace [Client].[Application].WebClient
{
    public partial class _Threads : Page
    {
        protected void Page_Load(object sender, Eventargs e);
    }
}
Medlem sedan okt. 200850 inlägg
#7

doggelito skrev:

Men sen, en aspx sida som visar forumtrådar, vad heter den klassen och i vilket namespace läggs den?
Alla har väl gjort ett forum nån gång! :) Vad heter eran klass/namespace?

Jag föredrar Domain Driven Design, så om vi utgår från det och jag ska skapa ett forum, så skulle det kanske se ut som följande:

Projekt och Namespace:

Nsquared2.Forum.DomainLayer <Projekt och root namespace>
Nsquared2.Forum.DomainLayer.Entities <folder i projektet och namespace>
Nsquared2.Forum.DomainLayer.Repositories <folder i projektet ochnamespace>

Under Entities skulle alla mina entiteter finnas, tex Thread, Post, User etc
Under Repositories skulle alla mina repositories finnas, du kan se Repository lite som som DAL.

Projekt och Namespace:

Nsquared2.Forum.PresentationLayer <Web sitens namespace>

eller bara Nsquared2.Forum

alternativ om jag har flera klienter:

Nsquared2.Forum.WebApplication (eller WebClient)
Nsquared2.Forum.WinApplication

Här ligger alla vyer (WebForms), tex User.aspx, Threads.aspx osv.

Skulle jag bygga efter "Windows DNA" där vi delar upp Presentation, Business och Data Access, så skulle jag ev ha följande namespace och projekt:

Nsquared2.Forum.PresentationLayer
Nsquared2.Forum.BusinessLayer
Nsquared2.Forum.DataAccessLayer

256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)