Har skapat en klass "User" som ska innehålla en massa information om användare (givetvis) men tycker att det ser tråkigt ut när jag kollar i min class.
public class User
{
#region Private Member Variables
private int userid;
private string username;
private string email;
private string password;
private string fullname;
private string address;
private int mpnid;
private int phone;
private string signature;
private string skype;
private string msnmessenger;
private int icq;
private string yahoomessenger;
private string lastlogindate;
private bool adminaccess;
private bool resultaccess;
private bool writeaccess;
private bool useraccess;
private bool active;
#endregion
#region Constructors
public User() { }
public User
(
int userid,
string username,
string email,
string password,
string fullname,
string address,
int mpnid,
int phone,
string signature,
string skype,
string msnmessenger,
int icq,
string yahoomessenger,
string lastlogindate,
bool adminaccess,
bool resultaccess,
bool writeaccess,
bool useraccess,
bool active
)
{
this.userid = userid;
this.username = username;
this.email = email;
this.password = password;
this.fullname = fullname;
this.address = address;
this.mpnid = mpnid;
this.phone = phone;
this.signature = signature;
this.skype = skype;
this.msnmessenger = msnmessenger;
this.icq = icq;
this.yahoomessenger = yahoomessenger;
this.lastlogindate = lastlogindate;
this.adminaccess = adminaccess;
this.resultaccess = resultaccess;
this.writeaccess = writeaccess;
this.useraccess = useraccess;
this.active = active;
}
#endregion
#region Public Properties
public int UserID
{
get { return userid; }
set { userid = value; }
}
public string UserName
{
get { return username; }
set { username = value; }
}
public string Email
{
get { return email; }
set { email = value; }
}
public string Password
{
get { return password; }
set { password = value; }
}
public string FullName
{
get { return fullname; }
set { fullname = value; }
}
public string Address
{
get { return address; }
set { address = value; }
}
public int MpnID
{
get { return mpnid; }
set { mpnid = value; }
}
public int Phone
{
get { return phone; }
set { phone = value; }
}
public string Signature
{
get { return signature; }
set { signature = value; }
}
public string Skype
{
get { return skype; }
set { skype = value; }
}
public string MsnMessenger
{
get { return msnmessenger; }
set { msnmessenger = value; }
}
public int ICQ
{
get { return icq; }
set { icq = value; }
}
public string YahooMessenger
{
get { return yahoomessenger; }
set { yahoomessenger = value; }
}
public string LastLoginDate
{
get { return lastlogindate; }
set { lastlogindate = value; }
}
public bool AdminAccess
{
get { return adminaccess; }
set { adminaccess = value; }
}
public bool ResultAccess
{
get { return resultaccess; }
set { resultaccess = value; }
}
public bool WriteAccess
{
get { return writeaccess; }
set { writeaccess = value; }
}
public bool UserAccess
{
get { return useraccess; }
set { useraccess = value; }
}
public bool Active
{
get { return active; }
set { active = value; }
}
#endregion
}
Kan jag förenkla / minska den på nåt vis? Jag har en massa idéer på hur jag skulle kunna göra men har inte vågat ändra för mycket :)
användarkontots rättigheter borde jag väl med fördel kunna använda mig av enum istället och ha en metod för getUserType istället och byta ut alla access mot UserType eller MemberType?
Nån speciell anledning till att du har en konstruktor med alla dessa variablar?
Själv är jag lite allergisk mot sånt! :)
För samtidigt har du ju alla fält som publika egenskaper, känns som om det räcker!
Men vad vet jag, är lite full just nu! Skål! :bire
Annars är nog klassen så rolig som den kan bli! :)
När det gäller rättigheter så har jag lite dåliga erfarenheter när man sätter dem direkt på användaren. Ju mer man bygger ut och ju fler användare det blir så vet man till slut inte vad användarna får göra och inte får göra. Bättre då att flytta all behörighet till grupper istället och så gör du en List<> med användarens grupper i. :)
När det gäller rättigheter så har jag lite dåliga erfarenheter när man sätter dem direkt på användaren. Ju mer man bygger ut och ju fler användare det blir så vet man till slut inte vad användarna får göra och inte får göra. Bättre då att flytta all behörighet till grupper istället och så gör du en List<> med användarens grupper i. :)
enum IM { Skype, MsnMessenger, Icq, YahooMessenger }
skulle väl gå att använda till nåt. Annars kanske en IList skulle funka men jag begriper inte hur jag skulle binda värden till min IList...
public IList IM
{
get { return im; }
set { im = value; }
}
lär ju inte vara rätt metod. Man kan ju lägga till i en ILIst men hur då i det här fallet? Jag har läst för mycket om DDD och Patterns det sista och nu är jag helt vilsen i programmeringen.... allt har blivit kaos :)
Jag hade tänkt det från början, sedan hörde jag att varje klass ska ha en ege fil och det känns väldigt lite för en sådan fil när det ändå bara kommer tillhöra user...
Antar att jag får lämna det bakom mig och ha dubbla klasser tillsvidare
Har möblerat om lite... tror det kommer bli lite snyggare såhär.
[Flags()]
public enum Permissions
{
None = 0,
Administer = 1,
PostResults = 2,
PostNews = 4,
User = 8,
All = Administer | PostResults | PostNews | User
}
public class User
{
#region Private Member Variables
private int userid;
private string username;
private string email;
private string password;
private string fullname;
private string address;
private int mpnid;
private int phone;
private string signature;
private IList<IM> im;
private DateTime lastlogindate;
private Permissions _permission = Permissions.None;
private bool active;
#endregion
#region Constructors
public User() { }
#endregion
#region Public Properties
public int UserID
{
get { return userid; }
set { userid = value; }
}
public string UserName
{
get { return username; }
set { username = value; }
}
public string Email
{
get { return email; }
set { email = value; }
}
public string Password
{
get { return password; }
set { password = value; }
}
public string FullName
{
get { return fullname; }
set { fullname = value; }
}
public string Address
{
get { return address; }
set { address = value; }
}
public int MpnID
{
get { return mpnid; }
set { mpnid = value; }
}
public int Phone
{
get { return phone; }
set { phone = value; }
}
public string Signature
{
get { return signature; }
set { signature = value; }
}
public IList<IM> IM;
public DateTime LastLoginDate
{
get { return lastlogindate; }
set { lastlogindate = value; }
}
public Permissions Permission
{
get { return _permission; }
set { _permission = value; }
}
public bool Active
{
get { return active; }
set { active = value; }
}
#endregion
}
public class IM
{
private string _skype;
private string _msnmessenger;
private string _yahoomessenger;
private int _icq;
public string Skype
{
get { return _skype; }
set { _skype = value; }
}
public string MsnMessenger
{
get { return _msnmessenger; }
set { _msnmessenger = value; }
}
public int ICQ
{
get { return _icq; }
set { _icq = value; }
}
public string YahooMessenger
{
get { return _yahoomessenger; }
set { _yahoomessenger = value; }
}
}
Nu vet jag inte hur din databas ser ut men rent spontant så hade jag nog inte gjort im klassen så där.
För mig hade den nog sett ut typ:
public class IM
{
private int id;
private string name;
private string username;
public ...
och sedan lagt alla mess. programmen i en egen tabell i databasen med relation till users för att på så sätt slippa hårdkodningar av programmen.
det blir enkelt då att lägga till ett mess. program då om du skulle vilja! :)
Jag kommer i dagsläget inte ha någon användning av IM alls, det är ett framtida projekt och ingenting som jag bryr mig så himla mycket om men jag håller med dig om att det blir lite bättre maintainability då.
Däremot tror jag inte det kommer sådär himla många nya chatprogram som folk kommer använda sig av.
Själv har jag testat det mesta men lagt ner allt utom Live Messenger.
273 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25