14:55:35 @azyobuzin@mstdn.maud.io
icon

広告がダサすぎてだっさって声出た

Attach image
17:02:07 @azyobuzin@mstdn.maud.io
icon

foo がどこかにあるストレージから bar を get する

17:05:36 @azyobuzin@mstdn.maud.io
2020-07-10 17:04:31 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

この解釈、 set ならまだそうかなと思えなくもないんだけど、メンバ変数 (プロパティ?) に対して使うのはなんだか……という感じがする (べつに理屈としてはおかしくないと思うんだけど)。
実装の自明さへのイメージが邪魔なだけ?

17:05:41 @azyobuzin@mstdn.maud.io
icon

それがメンバ変数であるかすら隠蔽しているから getter なのでは

17:14:58 @azyobuzin@mstdn.maud.io
icon

getFoo というメソッドならば、重い処理が裏にあってもわからなくもない。メソッド呼び出しとは何が起こるかわからないから、呼び出し側は十分に注意するものなので、 getFoo の結果は(何度呼び出しても同じなら)使いまわすよう必ずコードを書く。

※もし C# のプロパティで Foo というプロパティの getter が重かったらキレる。これは構文上メソッド呼び出しにならないので、コストはないもののみに適用するべき。

17:21:20 @azyobuzin@mstdn.maud.io
icon

僕の見解としては、重いメソッドに「getFoo」とつけるのはおすすめしないが、一方で呼び出し側は getFoo という名前だからと言って中身がただのフィールドアクセスという仮定を置いてはいけない です

17:23:38 @azyobuzin@mstdn.maud.io
icon

(これはただのクソ C#er のお気持ちなんですけど、プロパティのアクセサもメソッド呼び出しとしてコンパイルされることを知っているので、プロパティについても僕は結構警戒するような、つまり複数回使うならローカル変数に代入しておくようなコードを書きます)

17:26:15 @azyobuzin@mstdn.maud.io
icon

Java の LinkedList は List インターフェイスを実装するのでインデックスアクセスができるけど、 .NET の LinkedList は IReadOnlyList を実装していないのは面白い。 IReadOnlyList のインデクサは O(1) にしか使わせないという強い意志を感じる