すごく今更だけど拡張メソッドが楽しい

いままで、拡張メソッドは避けて通ってきたというか、例えば組み込みの型に対する拡張なんかは保守性に問題が出そうなのでどちらかといえば否定的な立場だったんですよ。
もちろん、LINQのような方向性の拡張は別だけどね。

でも最近はあんまりそういう感じでもない。
というか別に組み込みの型は、みんな使い慣れてんだから見慣れないメソッド呼び出しがあれば拡張メソッドだってすぐわかるし、各々が作ったクラスへの拡張ならそもそもどうとでもなるわけで。チームでメンバーが好き勝手に乱用するとーーみたいな意見もきくけど、そもそもそんな連携がとれていないチームなんてのは拡張メソッド以前の問題で、使うことで特別可読性が落ちたりはしない。


なんといっても拡張メソッドのいいところは、括弧がネストになって可読性が落ちるのを防げるところ。メソッドチェインの形で呼び出せるように出来るので、自然言語としての形や、処理の流れをより読みやすく表現できるんじゃあないのか? と最近はそういう感じで宗旨変えした感じであれです。

とりあえず仕事で、intからenum呼び出せオラみたいな指令を受けたのだけど、それって安全性的にどうなの? とすごく疑問だったので、少しでもいい感じにしたいなーと下記みたいな拡張メソッドを定義してみた。


どうだろう。
こうすればVBなら 3. convertEnum(of 列挙隊)みたいな感じでこう、いいんじゃないかなと思った。しかし的外れなことをしてる気がしなくもない。

そういえばどっかの記事でも、C#でOptionを実装する際に拡張メソッド使っているのもみたきがしますね。
なんにせよ、想定外の動作をさせるようなものならともかく、可読性を上げて、より抽象的に処理を書けるという観点でいえばガンガン使っちゃっていいんじゃないすかね〜と思った次第で、つまるところRubyScalaなんかでは主流らしいMixin(まだよくわかってないけど)だとかも、単一継承クラスとインターフェースでの抽象化には限界があるんじゃね? という最近気がついたアレを裏付けてくれるような。
とりあえず色々ためして、そしたら答えがでるのかもしれないのかも。