コレクションを公開すると、ソリューションが結合されます
TL;DR: 意図しない副作用を防ぐために不変コレクションを使用します。
エイリアシングは、2 つ以上の変数が同じオブジェクトを参照する場合に発生します。
これは、特に 1 つの変数が共有オブジェクトを変更する場合に、予期しない副作用を引き起こす可能性があります。
不変コレクションは、作成後に変更することはできないため、誤ってエイリアスが作成されることを防ぐことができます。
時期尚早なオプティマイザーは、コレクションのコピーはコストのかかる操作であり、避けるべきであると主張するでしょう。
これはオブジェクト エイリアシングの特殊なケースです
public class MutableExample { public static void main(String[] args) { List<Integer> numbers = List.of(1, 2, 3); List<Integer> otherNumbers = numbers; // Aliasing otherNumbers.add(4); System.out.println(numbers); // Output: [1, 2, 3, 4] } }
public class ImmutableExample { public static void main(String[] args) { List<Integer> numbers = List.of(1, 2, 3); List<Integer> otherNumbers = List.copyOf(numbers); // Creating a copy otherNumbers.add(4); System.out.println(numbers); // Output: [1, 2, 3] } }
[X] 半自動
いくつかの静的解析ツールは、エイリアシングの乱用について警告することがあります。
[x] 中級
AI コード ジェネレーターは、特に可変コレクションを操作する場合、デフォルトで常に不変オブジェクトを作成するとは限りません。
不変のコレクションを優先し、エイリアスを避けるために既存のコレクションをラップするように促すことができます。
AI ツールは、潜在的なエイリアシングの問題についてコードを分析し、代わりに不変コレクションの使用を提案できます。
不変コレクションを使用すると、意図しない副作用を回避できます。
これにより、コードがより予測可能になり、推論が容易になります。
コードの匂いは私の意見です。
Unsplash の Martino Pietropoli による写真
オブジェクトが不変の場合、その状態は 1 つだけになり、大きな利益を得ることができます。
ジョシュア・ブロック
この記事は CodeSmell シリーズの一部です。
以上がコードの匂い - コレクションのエイリアシングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。