Avatar
Avatar
trickart
うーん、そこは感覚の違いかもですね… そもそも「これimmutableのつもりだったけど全然変える必要があった」ってことが経験があまりなくてそういう作業の面倒くささがピンとこないんですよね… これは最初から設計がうまくいっているという話ではなく、単純に一度作ったものをそんなにいじってないだけだとは思います。 (また非常に大きな構造のstructをいじってないとか) 多くの人もそんな感じだからデメリットを感じられてないのではないか?と感じています。
omochimetaru 12/4/2024 4:52 AM
大きいというイメージは無かったです。仮にプロパティが2つだけの場合でも、initをやり直すよりプロパティを書き換える方が簡潔に済むので、小さくても同じですね。 読者がそういう状況に遭遇してないので共感しづらいのはそうなのかもしれませんね。 個人的にはそれがnominal tupleであることを示唆するヒントとしてもvarにしておくのが良いと思います。
4:54 AM
逆にletを使うということは、それが将来の改修で内部的な状態や恒等条件を追加したりしうるので、その時にinitを経由している事が保証できるように保護している、生きた(?)structであることを示す気持ちであってほしい。 (edited)
4:57 AM
ツイートのリプライを見ても僕が一番引っかかるのは、 たとえプロパティをletにしても、値をvarで持っていたら丸ごと変更できてしまうし、 逆にvarだったとしても、値をletで持てば変更を禁じられるのだから、 値型を使う側がvar/letのどちらにするかというところで制御される話であって、 値型を設計する側がプロパティをどうこうしても意味ない、 という事が理解されていないんじゃないか・・・?というところですねえ (edited)