【发布时间】:2010-09-30 14:25:19
【问题描述】:
对于域实体,属性名称是否应该以实体名称开头? IE。我的班级 Warehouse 有一个属性 WarehouseNumber。该属性应该命名为 WarehouseNumber 还是简称为 Number?
想法?
【问题讨论】:
对于域实体,属性名称是否应该以实体名称开头? IE。我的班级 Warehouse 有一个属性 WarehouseNumber。该属性应该命名为 WarehouseNumber 还是简称为 Number?
想法?
【问题讨论】:
我不喜欢使用前缀,我发现它更容易输入,更易读,实体的上下文几乎总是显而易见的。
【讨论】:
想想你所代表的概念、它们出现的上下文以及它们的相对频率。
在这种情况下,数据是Warehouse 和Number。在Warehouse 的上下文中,Number 是合格的。在Warehouse 之外,WarehouseNumber 将被正确限定,即Order.WarehouseNumber。
那么Warehouse.WarehouseNumber 将是多余的。
【讨论】:
我永远不会在代码中为它们添加前缀。您应该始终使用有意义的变量、属性和方法名称,从而使前缀变得多余。
var currentWarehouse = warehouseService.Find(id);
var number = currentWarehouse.Number;
或
var number = order.Warehouse.Number;
在将它们存储在数据库中时,我对此事的决定较少。有话要说:
select *
from dbo.Warehouse
where WarehouseId in (
select WarehouseId
from ...
)
【讨论】:
这是对象关系阻抗不匹配的 mofo 之一。在 OO 中,肯定实体名称的前缀似乎不合适。但是,在 RDMBS 中,实体前缀唯一地标识了一个属性,并鼓励避免这种情况:
选择 邮编——天啊!!!我来自哪张桌子! C.PostCode 还是 S.PostCode??!??!
来自 客户C
INNER JOIN 供应商 S ON C.PrefferredSupplierID = S.SupplierID
我的建议是任意选择一个约定并大致坚持下去。毕竟这是一个节省时间的惯例!可能没关系.. :)
【讨论】: