是否有任何理由为非常基本的数据对象提供接口?

fea*_*net 2 language-agnostic oop design-patterns

在编写我当前的项目时,我已经为所有对象创建了接口.我认为这被认为是良好的编码实践.

我基本上最终得到了一堆定义非常简单的类的接口.

例如:

public interface IUser
{
    int Id { get; }
    string DisplayName { get; }
}
Run Code Online (Sandbox Code Playgroud)

我真的没有意识到在这里有这些.我现在另外在几个地方遇到问题,我想做一些事情,比如定义运算符重载,这是我在接口级别无法做到的.

我很想通过我的项目并删除所有这些接口(我会为我的存储库和其他定义更复杂行为的东西保留接口),但是我会有点去删除100行的代码以及随之而来的所有重构.

我想听听其他用户的意见.是否有任何目的来定义基本对象上的接口?将它们放在那里是否有任何伤害,即使它们不是真的有必要?

Nix*_*Nix 6

如果接口没有添加值,则删除它们.当谈到实体上的接口,除非它们有共同点,我认为将它们放在接口后面并没有增加价值.

如果它们共享共同点,则允许您使用通用算法来处理它们.

我经常看到"实体"扩展包含审计信息的基类.

interface IAuditBase{
    int Id { get; }
    string UpdateDate{ get; }
    //etc.
}
Run Code Online (Sandbox Code Playgroud)