2013-12-17 68 views
0

以不同的视角扩展Method names for getting data命名约定 - 获取数据的方法名称

我有一系列的GetData方法,它以各种形式返回数据。我想知道命名这些方法的最佳方法,确切而有效。

  1. 公共数据表的GetData() - 返回从一个给定的表
  2. 公共列表的GetData()中的数据 - 对象的列表
  3. 公共数据集的GetData()的形式返回数据 - 返回数据当存在与查询
  4. 公共目标x的GetData(objecty)相关联的多个数据表 - 返回所选对象
  5. 公共数据表的GetData(objecty) - 返回所选对象为单行表
  6. 公共DataSe t GetData(objecty) - 返回所选对象(例如:在主子模式下)

回答

2

在C#中,不能只有返回类型不同的方法重载。因此,你需要独特的名字。

我会建议使用命名基于返回的内容。这通过intellisense使API更清晰。我还用一个更具体的名字不是“数据” - 例如,如果该方法检索表示客户数据,我会使用:

public DataTable GetCustomerTable() { 
public List<Customer> GetCustomers() { 
public DataSet GetCustomerDataSet() { 

public Customer GetCustomer(int id) { 
// I'd question whether these really belong at all... 
public DataTable GetCustomerAsTable(int id) { 
public DataSet GetCustomerAsDataSet(int id) { 
+0

我同意你关于Data的具体名称的观点。但在我的情况下,这些是接口方法。 –

1

命名是相当主观的,但在我看来,有两件事情跟随有“好名字”。

  1. 准确。
  2. 按照principle of least astonishment

这两个原则对维护很重要;如果你有一堆名为GetData的方法,人们就不会知道会发生什么,并且会浪费时间阅读文档以找到适当的过载。

您还想要具有代表您所处抽象级别的名称。假设您想获得一些名为Page的实体。在DAO级别,它很容易被public DataTable GetPagesTable();,因为你正在处理表格。在更高的抽象层次上,使用List,可以将其更改为public List GetPages();(从名称中删除表)。你距离数据库很远,所以名称应该反映这一点。

如果你传递一个对象或ID,说清楚的方法名称,以避免任何意外,像public DataTable GetPagesFromId(int id);

从你的例子,我可能会落得这样的事情:

public DataTable Get<TableName>Table() - returns the data from a given table 
public List Get<ObjectName>s() - returns the data in the form of List of objects 
public DataSet Get<ComposedObjectName>() - returns the data when there are multiple data tables associated with queries 
public objectx Get<ObjectName>(objecty) - returns selected object 
public DataSet Get<ObjectName>AsMasterChild(objecty) - returns selected object (ex: in case of master-child)