如果您尝试添加数据结构中已存在的某些内容,那么我有一些数据结构保持不变。这个决定可能是通过比较一个键或者使用一个等号函数来做出的。只有当对象的实例是结构的新实例时,它才会被添加到结构中。只有在不存在的情况下才能添加Java命名约定
我想知道你怎么命名这些方法? updateX()
,addX()
,putX()
都是误导,但像addIfXDoesntExist()
是丑陋的。
是否有一个约定或准标准或任何只是听起来不错,但短,但同时综合?
如果您尝试添加数据结构中已存在的某些内容,那么我有一些数据结构保持不变。这个决定可能是通过比较一个键或者使用一个等号函数来做出的。只有当对象的实例是结构的新实例时,它才会被添加到结构中。只有在不存在的情况下才能添加Java命名约定
我想知道你怎么命名这些方法? updateX()
,addX()
,putX()
都是误导,但像addIfXDoesntExist()
是丑陋的。
是否有一个约定或准标准或任何只是听起来不错,但短,但同时综合?
对于这样的逻辑,您可以返回一个布尔值,如果它是成功的add,则返回true;如果它已经存在,则返回false。这意味着你可以决定你是否不在乎结果与否以及if语句等
public boolean add(Object o){}
他们这样做是集合实现内大量进行其他额外的逻辑。
From Collections.add() - 你可以实际实现的:“确保这个集合包含指定的元素(可选操作)。如果这个集合由于调用而改变,则返回true(如果这个集合不允许重复并且已经包含指定的元素。)“。说真的。 – 2011-12-29 15:46:02
创建方法boolean tryAdd()
似乎是一个好主意,如果添加了元素,则返回true;如果已经在结构中,则返回false。也可能没有返回类型。你可以创建并抛出ElementAlreadyInStructure
检查异常,并根据需要进行处理。
我会为这个答案投票,如果只是因为'tryAdd(T t):布尔值'它比'add(T t):boolean'更具描述性。然而,正如'Collections.add(T t):boolean'已经定义了相同的功能,只是使用add * should *不会混淆Java开发者。 – 2011-12-29 15:54:24
如果它有任何帮助,['java.util.Set'](http://docs.oracle.com/javase/6/docs/api/java/util/Set.html)只是简单地调用这个“ add'”。 – 2011-12-28 16:45:59
'ConcurrentMap'使用'putIfAbsent()'。 – 2011-12-28 16:46:00
@OliCharlesworth java.util.Collections只是简单地调用这个'add' :) – 2011-12-29 15:47:31