0

这个问题是关于约定的。

假设我有一个对象Basket,它在某个私有属性 ( Basket._items) 中存储各种项目。现在,我想要一些添加删除获取项目的方法。

每个方法可以将单个 项目项目列表作为参数,或者不带参数,在删除和获取的情况下,可以删除或返回所有项目

我应该如何命名我的方法?

addItemaddItems
removeItemremoveItems
getItemgetItems

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


编辑:像addget这样的通用名称不会飞,因为在语义上我没有添加或获取篮子;该对象也用于容纳其他东西。我会考虑使用类似的东西Basket.items.add(),但这不是最佳选择,因为实际的项目对象也必须被存储Basket.items._items或者Basket.items._contents看起来很糟糕。我仍然想获得更多关于我原来的问题的答案。

4

2 回答 2

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

于 2012-10-04T00:02:51.513 回答
0

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

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

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

这是我的看法。作为参考,你有:

Java List 接口
Java 编码约定

不同的语言有不同的约定,但这里概述的约定通常也适用于其他语言(尽管它并不能完全回答您的问题)。

于 2012-10-04T00:18:27.187 回答