【问题标题】:Domain Entity Property Names域实体属性名称
【发布时间】:2010-09-30 14:25:19
【问题描述】:

对于域实体,属性名称是否应该以实体名称开头? IE。我的班级 Warehouse 有一个属性 WarehouseNumber。该属性应该命名为 WarehouseNumber 还是简称为 Number?

想法?

【问题讨论】:

    标签: c# class dns


    【解决方案1】:

    我不喜欢使用前缀,我发现它更容易输入,更易读,实体的上下文几乎总是显而易见的。

    【讨论】:

      【解决方案2】:

      想想你所代表的概念、它们出现的上下文以及它们的相对频率。

      在这种情况下,数据是WarehouseNumber。在Warehouse 的上下文中,Number 是合格的。在Warehouse 之外,WarehouseNumber 将被正确限定,即Order.WarehouseNumber

      那么Warehouse.WarehouseNumber 将是多余的。

      【讨论】:

        【解决方案3】:

        我永远不会在代码中为它们添加前缀。您应该始终使用有意义的变量、属性和方法名称,从而使前缀变得多余。

        var currentWarehouse = warehouseService.Find(id);
        
        var number = currentWarehouse.Number;
        

        var number = order.Warehouse.Number;
        

        在将它们存储在数据库中时,我对此事的决定较少。有话要说:

        select   *
        from     dbo.Warehouse
        where    WarehouseId in (
                     select   WarehouseId
                     from     ...
                 )
        

        【讨论】:

          【解决方案4】:

          这是对象关系阻抗不匹配的 mofo 之一。在 OO 中,肯定实体名称的前缀似乎不合适。但是,在 RDMBS 中,实体前缀唯一地标识了一个属性,并鼓励避免这种情况:

          选择 邮编——天啊!!!我来自哪张桌子! C.PostCode 还是 S.PostCode??!??!

          来自 客户C

          INNER JOIN 供应商 S ON C.PrefferredSupplierID = S.SupplierID

          我的建议是任意选择一个约定并大致坚持下去。毕竟这是一个节省时间的惯例!可能没关系.. :)

          【讨论】:

            猜你喜欢
            • 2013-05-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-01-20
            • 2012-08-24
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多