Java add()方法约定

ram*_*ion 2 java naming-conventions

所以,我通常是一个红宝石程序员,因此我对Java约定的掌握充其量是不稳定的.如果我有一个类A并且想要定义一个方法来添加该类的两个实例,那么行为和返回类型的约定是什么?

public class A
{
    //...
    public NotSureWhatTypeItShouldReturn add (A that) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

我是不是该

  • 返回一个表示成功的布尔值并修改目标,或者
  • 返回目标的修改副本并在出错时抛出异常

哪种方法适合这种方法的常规Java约定?

Mic*_*zek 6

两者都存在:Collection.add修改集合并返回一个布尔值,并BigInteger.add返回一个新的BigInteger,它保存原始实例和传入实例的总和.

我通常期望大多数方法修改它们被调用的实例,而不是返回相同类型的新对象,但是如果有一个很好的用例来保持实例const并且一直返回一个新实例你当然可以做那


Jon*_*eet 5

除非是"预期失败",例如尝试添加到集合,否则不要返回布尔值.如果出现问题,请抛出异常.

现在,您可以返回修改后的副本 - 或者您可以添加到现有对象.不变性通常是一个不错的属性......但Java中的大多数集合都是可变的.如果你要沿着不可变的路线走下去,你可能要考虑使用plus而不是add- 它给人一种"你应该看到的结果,我不会改变目标"IMO的感觉.