2

Java API の流暢なスタイルを持つ不変オブジェクトのコレクションに何かを「追加」するメソッドに名前を付けるためのベストプラクティスまたは一般的に受け入れられているパターンはありますか?

コード例を次に示します。

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

これは、私が開発中のプロジェクトのプル リクエストから来ています。この方法の最適な命名オプションについてはすでに議論しましたが、両方ともフランス語であることは適切な名前を選択するのに役立ちません。

先行技術またはベスト プラクティスを見つけようとしましたが、これまでに見つけたものは次のとおりです。

私が得た他の提案:

  • 元の PR 提案:withAddedXXX
  • 別の命題:withAdditionalXXX
4

3 に答える 3

2

and元のリストを変更しないことをお勧めします。したがって、次のようなものがあります。

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
    }
}
于 2013-08-27T20:33:48.930 に答える