「夏だ!リボだ!分割だ!」というはがきが届いていて、悪魔や……
Seq モジュール、中身の実装を System.Linq.Enumerable の呼び出しに変えちゃえば corefx の最適化祭りの恩恵受けられそうだなぁ
System.Collections.Specialized.BitVector32 とかいう構造体の存在初めて知ったんだが
概念上うまくいくはずなのに、実際にプログラム書き始めると、なにか違うの連鎖になっていくのつらいぞ〜〜〜 やるべきことは論文に書いてあるアルゴリズム書き写すだけのはずなんだけどな〜〜〜
お互いにアプローチしようと考えたこともないけどこのままの関係が続いたらいいなと思っているという状態の話ですか?
出会った瞬間、第一印象で恋愛対象かそうでないかを判断する人がいるがいるらしいけど、僕には一生理解できそうにないなと思った。そういう人は恋愛モードになると駆け引きをするようになる、つまり自分の見せたいところだけを見せようとする面が強くなるらしいので、根底から価値観が違うよな……
この解釈、 set ならまだそうかなと思えなくもないんだけど、メンバ変数 (プロパティ?) に対して使うのはなんだか……という感じがする (べつに理屈としてはおかしくないと思うんだけど)。
実装の自明さへのイメージが邪魔なだけ?
getFoo というメソッドならば、重い処理が裏にあってもわからなくもない。メソッド呼び出しとは何が起こるかわからないから、呼び出し側は十分に注意するものなので、 getFoo の結果は(何度呼び出しても同じなら)使いまわすよう必ずコードを書く。
※もし C# のプロパティで Foo というプロパティの getter が重かったらキレる。これは構文上メソッド呼び出しにならないので、コストはないもののみに適用するべき。
僕の見解としては、重いメソッドに「getFoo」とつけるのはおすすめしないが、一方で呼び出し側は getFoo という名前だからと言って中身がただのフィールドアクセスという仮定を置いてはいけない です
(これはただのクソ C#er のお気持ちなんですけど、プロパティのアクセサもメソッド呼び出しとしてコンパイルされることを知っているので、プロパティについても僕は結構警戒するような、つまり複数回使うならローカル変数に代入しておくようなコードを書きます)
Java の LinkedList は List インターフェイスを実装するのでインデックスアクセスができるけど、 .NET の LinkedList は IReadOnlyList を実装していないのは面白い。 IReadOnlyList のインデクサは O(1) にしか使わせないという強い意志を感じる