java - 以流畅的风格将项目添加到不可变对象(immutable对象)的命名方法

标签 java immutability fluent

是否有最佳实践或普遍接受的模式来命名方法,以 Java API 的流畅风格将某些内容“添加”到不可变对象(immutable对象)的集合中?

这是一个代码示例:

public class GivenUUIDGenerator {
    private final ImmutableList<String> playbackUUIDs;

    public GivenUUIDGenerator(List<String> playbackUUIDs) {
        this.playbackUUIDs = ImmutableList.copyOf(playbackUUIDs);
    }

    public GivenUUIDGenerator howShouldINameThisMethod(String uuid){
        return new GivenUUIDGenerator(ImmutableList.<String>builder().addAll(playbackUUIDs).add(uuid).build());
    }
}

这来自 Pull Request在我正在开发的一个项目中,我们已经讨论过此方法的最佳命名选项,但都是法国人并不能帮助选择一个好名字。

我尝试寻找现有技术或最佳实践,这是我迄今为止发现的:

我得到的其他建议:

  • 原始公关主张:withAddedXXX
  • 另一个提议:withAdditionalXXX

最佳答案

我建议使用,而不是修改原始列表。因此,你可以有这样的东西:

GivenUUIDGenerator.with(originalList).and(a).and(b).and(c).generate();

这就是类的样子:

public class GivenUUIDGenerator {
    public static GivenUUIDGenerator with(List<String> playbackUUIDs) {
        return new GivenUUIDGenerator(playbackUUIDs);
    }

    private final ImmutableList<String> playbackUUIDs;

    private GivenUUIDGenerator(List<String> playbackUUIDs) {
        this.playbackUUIDs = ImmutableList.copyOf(playbackUUIDs);
    }

    public GivenUUIDGenerator and(String uuid){
        return new GivenUUIDGenerator(ImmutableList.<String>builder().addAll(playbackUUIDs).add(uuid).build());
    }

    public ... generate() {
        // ... do here whatever it is you want to do with your list
    }
}

关于java - 以流畅的风格将项目添加到不可变对象(immutable对象)的命名方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18474710/

相关文章:

c# - 使用带有构建器模式的流畅界面

validation - 嵌套验证器只能与成员表达式一起使用

swift - Vapor - 流畅,将对象保存到 PostgreSQL

java - 在 kotlin 中沟通父类及其内部类的最佳方式是什么?

java - 这个东西在Java中叫什么?

java - Titanium 模块、android 6 权限和覆盖屏幕

f# - 在 F# 中缩小 try-with block ?

reference - 为什么我可以将不可变引用传递给 BufReader,而不是可变引用?

java - XML 解析 - XPath 表达式尝试访问第二个 for 循环内的 xml 元素

java - 每隔几秒更新一次 android studio 中的 gps 位置