我被告知这是糟糕的编程实践,don';我不知道为什么持续的无知是错误的

本文关键字:为什么 我不知道 错误 被告 编程 don | 更新日期: 2023-09-27 18:28:30

我最近发布了关于我的另一个问题的以下代码。请原谅部分属性,这是我Wanted要做的事情,但不能。。。

public partial class Agency : PropertyValidator, IAgency
{
    private string _name;
    public partial string Name 
    {
        get { return _name; }
        set
        {
            // PropertyValidator stuff
            if (string.IsNullOrEmpty(value))
                AddErrorToProperty("Agency name must contain a reasonable alphanumeric value.");
            if (string.IsNullOrWhiteSpace(value))   
                AddErrorToProperty("Agency name cannot contain all spaces.");
            SetPropertyIfValid(ref _name, value);
        }
    }
}

public partial class Agency : IPersitentEntity, IAgency
{       
    [Key]    // NOTE these Annotations are because of Entity Framework...nice separation! 
    public int ID { get; set; } // From IPersitentEntity
    [Required]
    [MinLength(3), MaxLength(50)]
    public partial string Name { get; set; } // IAgency NOTE this is not valid, but the 
                                             // separation is amazing!
    // From IPersitentEntity provide CRUD support
    public void Create() { throw new NotImplementedException(); }
    public void Retrieve(int id) { throw new NotImplementedException(); }
    public void Update(int id) { throw new NotImplementedException(); }
    public void Delete(int id) { throw new NotImplementedException(); }
}    

在信中,我对stackoverflow有一条评论,但没有回复,说。。。

You might want to read up on persistence ignorance and why making each of your entities inherit from IPersitentEntity is a "bad thing".


我以前从未听说过Persistence Ignorance,所以不得不查一下。原来我知道这个概念是什么,而不是这个术语。然而,我有点困惑,为什么我做的事情不好。

我被告知这是糟糕的编程实践,don';我不知道为什么持续的无知是错误的

主要问题是您的类现在有多个变化轴。如果您的业务模型发生变化,它可能会发生变化,也可能由于数据库层的变化而发生变化。这打破了的"单一责任原则"

查找SOLID原则,以下是Robert Martin和Scott Hanselmen的播客,描述了

http://www.hanselman.com/blog/HanselminutesPodcast145SOLIDPrinciplesWithUncleBobRobertCMartin.aspx