重载方法的命名 - 单数还是复数?

时间:2012-10-03 23:39:40

标签: javascript methods overloading naming plural

这个问题与约定有关。

我们说我有一个对象Basket,可以在一些私有财产(Basket._items)中存储各种项目。现在,我希望有几种方法可以添加删除获取项目。

每种方法都可以 单个项目项目列表作为参数,或者不带参数,如果是删除和获取,可以删除或返回所有项目

我该如何命名我的方法?

addItemaddItems
removeItemremoveItems
getItemgetItems

(他们不必所有必须是相同的形式;例如,也许只有最后一个应该是复数形式。)


编辑添加获取这样的通用名称,因为从语义上来说我没有添加或获取Baskets ;该对象也用于保存其他东西。我考虑使用Basket.items.add()之类的内容,但它不是最佳的,因为实际的项目对象也必须存储,Basket.items._itemsBasket.items._contents看起来很糟糕。我仍然希望在原来的问题上得到更多答案。

2 个答案:

答案 0 :(得分:1)

第一条准则是使用与您已为相关项目编写的代码相匹配的约定。

第二条准则是选择最符合方法的名称,以便最常用。如果默认/常用/无参数用于检索单个项目,则使用单数名称而不是复数。

第三条准则是与您在第三方库中使用的其他代码约定相匹配。例如,如果您知道使用您的库的人正在使用jQuery,那么他们的约定可能很适合。

由于Javascript是一种动态语言,因此在方法签名中通常是“懒惰”。所以你可以使用:

Basket.addItem(n);      // add a single item
Basket.addItem([n, m]); // add multiple items
Basket.getItem();       // retrieve a single item
Basket.getItem(5);      // retrieve an array of up to 5 items
Basket.removeItem();    // remove a single item
Basket.removeItem(2);   // remove up to two items
Basket.emptyItems();     // remove them all

当然,除非您已使用add()get()remove()

答案 1 :(得分:0)

如果参数是一个列表(数组),那么很明显你要添加几个元素。如果参数是您要添加的元素的单个实例,则同样的想法适用。

add( Array elements):
    foreach element e
        _items[lastindex] = e

add( Element element):
    _item[lastindex]= e

这是我的意见。作为参考,你有:

Java List interface
Java coding conventions

不同的语言有不同的惯例,但这里列出的惯例对其他语言来说通常也是合理的(尽管它并不能完全回答你的问题)。