我被告知这是糟糕的编程实践,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
,所以不得不查一下。原来我知道这个概念是什么,而不是这个术语。然而,我有点困惑,为什么我做的事情不好。
主要问题是您的类现在有多个变化轴。如果您的业务模型发生变化,它可能会发生变化,也可能由于数据库层的变化而发生变化。这打破了的"单一责任原则"
查找SOLID原则,以下是Robert Martin和Scott Hanselmen的播客,描述了
http://www.hanselman.com/blog/HanselminutesPodcast145SOLIDPrinciplesWithUncleBobRobertCMartin.aspx