質問: baseColor.Invert().Lighten(0.2).Saturate(0.5); ``` みたいにしたときに`baseColor`が変更されているべきか否か、ということです。 自信を変更したくないときのために、`Clone`とかいうメソッド(自分と同じ色をもつインスタンスを生成し返す)を作って対処する方法も浮かびましたが、普通こういった実装をしたりしますでしょうか? 皆様のご意見をお聞かせください。
回答: 個人的には,どっちが正解とかはないように思います. わかりやすさのために新しいインスタンスを返す場合もあるし,わざわざ別オブジェクトを確保するのが嫌だからそれ自体を変えてしまう場合もある. ただ,全体として統一されたルールで動くことと,メソッド名との兼ね合いだけは重要だと思っていて,例えば例示されているような場合,オブジェクト自体を変更するときは`invert`で,新しいオブジェクトを返すときは`inverted`にするとか,ルールを決めています. 実際ライブラリとかでは,動詞の原形(命令形)と受身形(過去分詞)で両方の動作を提供する実装なんかもありますし.