Соглашение об именах и структура класса для хранения пользователей - PullRequest
0 голосов
/ 17 сентября 2011

Я хочу создать класс с функциями, такими как Add (), Delete () и т. Д., Чтобы хранить пользователей в базе данных.

Итак, что лучше для именования и структуры?

Оба в одном классе:

**EXAMPLE**
User.Add("Username", "Password");
User user = User.GetUser();

class User
{
    public User(string username, string password)
    {
        Username = username;
        Password = password;
    }

    public string Username { get; set; }
    public string Password { get; set; }

    public static void Add(string username, string password)
    {
        //Add user to database
    }

    public static User GetUser()
    {
        //Get user from database
    }
}

или разделены на два класса и используют суффикс * Manager ...

**EXAMPLE**
UserManager.Add("", "");
User user = UserManager.GetUser();

class UserManager
{
    public static void Add(string username, string password)
    {
        //Add user to database
    }

    public static User GetUser()
    {
        //Get user from database
    }
}

class User
{
    public User(string username, string password)
    {
        Username = username;
        Password = password;
    }

    public string Username { get; set; }
    public string Password { get; set; }
}

или оба примера плохие, а у вас лучший?

Ответы [ 2 ]

1 голос
/ 17 сентября 2011

Я предпочитаю второй способ, с простыми объектами без логики и классов Manager, фактически MS Entity Framework делает более или менее то же самое, объекты имеют только свойства, а сгенерированный DBContext позволяет запрашивать, добавлять и редактировать объекты.

Небольшое примечание: не делайте методы UserManager статичными, класс должен быть обычным классом с методами экземпляра, чтобы вы могли легко тестировать и внедрять как / при необходимости.

небольшое второе замечание: выне собираемся извлекать пароль пользователя в виде открытого текста или хранить его в виде открытого текста в базе данных правильно?!?!: D

1 голос
/ 17 сентября 2011

Классы с именем "manager" в нем часто указывают на не очень известный дизайн.

Я бы выбрал классический шаблон репозитория и внедрение зависимостей *себя

...