このブログについて
最近システム設計に興味を持ち、特にコード設計について学んだことをまとめます。
自分の今後の戒めも込めて。
可変がもたらす意図せぬ影響について
可変オブジェクトは、複数の変数が同じオブジェクトを参照している場合、意図しない影響(副作用)が起こりやすくなります。
悪いコード例
var items = new List<string> { "Apple", "Banana" };
var backup = items;
items.Add("Orange");
// 期待: Apple, Banana → 実際: Apple, Banana, Orange
Console.WriteLine(string.Join(", ", backup));
backupに代入したつもりでも、同じリストを参照しているため、itemsを変更するとbackupも変わってしまいました。
これは可変オブジェクトの典型的な罠です。
良いコード例
var items = new List<string> { "Apple", "Banana" };
var backup = new List<string>(items); // コピーを作成
items.Add("Orange");
Console.WriteLine(string.Join(", ", backup)); // Apple, Banana
こうすることで、どのタイミングでも状態が変わらないことが保証され、予期せぬ変更やバグを防ぐことができます。