后者太可怕了。它是对具有销售订单的东西进行建模,而销售订单又由对象建模——而不是对具有销售订单对象的东西进行建模。
如果您正在为开发人员编写一个工具来帮助他们处理业务对象,那么“BusinessObject”应该只是代码中某些内容的名称。
前者通常是好的。
如果可以有多个,那就不好了SalesOrder
——即使一个是“主要”的,你也会引入混乱。然而SalesOrders
,作为可枚举或对象集合的属性SalesOrder
是好的(当英语复数不是单数 + 's' 形式时,使用真正的复数而不是仅仅添加 s,除非它是英语复数的情况与单数相同。
当其他一切都与销售相关时,它就不那么好了。例如,这太可怕了:
public class Sale
{
public SalesOrder SalesOrder{get;set;}
public SalesReference SalesReference{get;set;}
public decimal SalesValue{get;set;}
public string SalesCurrency{get;set;}
}
在这种情况下,我会从每个属性名称中删除“Sales”,但不会(必然)从类名中删除。
但是,这是一个更好的情况:
public class Sale
{
public SalesOrder SalesOrder{get;set;}
public StockOrder StockOrder{get;set;}
}
总之,接近它的方法是:
- 这个类所做的最好的名称是什么,它将它与其他类所做的区别开来(因此,没有“对象”、“业务对象”、“实体”或类似的东西,除非它确实在给定的情况下特别相关案子)。
- 该属性所反映的内容的最佳名称是什么,可以将其与其他属性区分开来。
如果他们最终在特定情况下给出相同的名称,那很好(除非它是一个嵌套类,当它模棱两可且非法时)。如果他们最终给了一个不同的名字,那也很好。