ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

C#の産業廃棄物たち

生物が進化していくときに要らない部分が退化していくように、プログラミング言語も仕様が改まるにしたがって推奨されない書き方やライブラリーが現れます。C#6.0のうわさもちらほら聞こえ始める昨今、もはや過去の遺物となったものを見て、弔いつつ使ってないかどうか確認してみましょう。

ジェネリックじゃないコレクション

ArrayListを筆頭に、だいたいSystem.Collections名前空間の直下にあるコレクションのことです。そもそも.NET Frameworkジェネリックに対応したのは2005年。この年に生まれた子たちは今や小学3年生です。いつまでもそんなもの使ってないで、ジェネリックコレクションを使いましょう。SilverlightWindowsストアアプリの世界にはもはやこんなものはありません。

匿名メソッド

2005年に一瞬登場したものの、2008年に登場したラムダ式にあっさりととってかわられた不遇な子です。ほぼ完全に上位互換なので、情けをかけずにラムダ式を使いましょう。

BeginInvoke、EndInvoke、BeginRead、EndRead…

Taskベースの非同期を使いましょう。この書き方はジェネリックがなかったころに返り値の型をそろえることを強いられたという事情があったそうです。もう一度言います。「ジェネリックがなかったころ」に「仕方なく強いられた」事情を引きずった書き方です。ジェネリックもTaskもある今、この書き方をあえてする意味はほとんどないといっていいでしょう。TaskAsyncみたいなメソッドが存在しない?そういうときはReactiveExtensionsを使うとはかどります。

readonlyではないpublicフィールド

アクセシビリティの観点からもよろしくないですが、WPFバインディングなんかはバインドするメンバーはプロパティであることがほぼ前提です。ほかにもアクセサーははちゃんとプロパティで作りましょう。自動プロパティやスニペットを駆使すれば、それほど苦も無くかけるはずです。