命名约定 - 获取数据的方法名称

时间:2013-12-17 18:04:04

标签: c# methods naming-conventions

以不同的角度扩展Method names for getting data

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

  1. public DataTable GetData() - 返回给定表中的数据
  2. public List GetData() - 以对象列表的形式返回数据
  3. public DataSet GetData() - 当有多个与查询相关联的数据表时返回数据
  4. public objectx GetData(objecty) - 返回所选对象
  5. public DataTable GetData(objecty) - 将所选对象作为表中的单行返回
  6. public DataSet GetData(objecty) - 返回所选对象(例如:如果是master-child)

2 个答案:

答案 0 :(得分:2)

在C#中,不能只有返回类型不同的方法重载。因此,您需要唯一的名称。

我建议根据返回的内容使用命名。这也将使API在通过intellisense使用时更加清晰。我还使用比“数据”更具体的名称 - 例如,如果方法是检索代表客户的数据,我会使用:

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) { 

答案 1 :(得分:1)

命名是非常主观的,但在我看来,要有“好名字”要遵循两件事。

  1. 准确一点。
  2. 关注principle of least astonishment
  3. 这两个原则对维护很重要;如果你有一堆名为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)