公開您的收藏集結合您的解決方案
TL;DR:使用不可變集合來防止意外的副作用。
當兩個或多個變數引用同一個物件時,就會發生別名。
這可能會導致意想不到的副作用,尤其是當一個變數修改共享物件時。
不可變集合在建立後無法更改,這有助於防止意外別名。
不成熟的最佳化者會認為複製集合是一項昂貴的操作,您應該避免。
這是物件別名的特殊情況
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 程式碼產生器預設可能不會總是建立不可變對象,尤其是在使用可變集合時。
您可以提示他們優先考慮不可變集合並包裝現有集合以避免別名。
人工智慧工具可以分析程式碼中潛在的別名問題,並建議使用不可變集合。
您可以使用不可變集合來避免意外的副作用。
這將使您的程式碼更可預測且更易於推理。
程式碼味道是我的觀點。
照片由 Martino Pietropoli 在 Unsplash 上拍攝
如果一個物件是不可變的,它只能處於一種狀態,那麼你就贏了。
約書亞·布洛赫
本文是 CodeSmell 系列的一部分。
以上是程式碼異味 - 集合別名的詳細內容。更多資訊請關注PHP中文網其他相關文章!