オブジェクト指向プログラミング

今から13年前、VB (VisualBasic) で初めてプログラムを書きました。


昨日、そのVBでひさしぶりにプログラムを書きました。

Split(str, ",")

書いていて、初めて違和感を感じました。それが、衝撃的でした。


書き方、ではない

オブジェクト指向を理解して、プログラムを書いてクラスを書いていたつもりでした。
でも、結局のところ今までちゃんと理解できてないから、上のような書き方に対して何も感じていなかったんだと思います。


もちろん、以下の二つで前者がオブジェクト指向書き方だと知っていました。

str.split(",");
StringUtils.split(str, ",");

ただ、やっぱりどこかで書き方の違い、実装方法の違いといった本質以外の部分でしか理解できていなかったんだと思います。
3か月前にうまく書けたと満足していたソースに、後者のようになっていた個所があったぐらいです。
今の仕事で書いているプログラムが、設計段階でオブジェクト指向になっていないことから、そう書くのがベターではあったと思います。ただ、決して満足していいようなベストなソースではありませんでした。それにもかかわらず満足してしまっていました。


以前、C#の拡張メソッドを聞いたときも、「複雑になるリスクを冒してまで、そういう風に書くメリットがあるのか?」と思いました。「staticメソッドのままで十分いいんじゃないか」と思いました。
今なら、「メリットどころか、そうしなければいけない」と、はっきり言えます。


オブジェクト指向で書くということは、「書き方の問題」ではなく「表現の問題」だと、自信を持って、はっきり言えます*1


4748日

たぶん、「13年たって今更かよ」というつっこみと、「・・・いや、どっちもいっしょ」という意見とがあると思います。
でも、自分にとっては、スタート地点(VB)を振り返って遠くまで来たなと感じました。今いる場所が、スタートした場所と全然違うと感じました。


だから、衝撃的でした。
気づかなかった方が幸せな気もします。はたして、自分がこれから携わるプログラムで、ちゃんとオブジェクト指向で書かれたものがどれだけあるのでしょうか*2
もし、そうじゃないのが大半なら、ベストでなくベターであると、満足できないままの日々になるのかと思います。


それを打破できるだけの、技術力がほしいですね。
そしたらきっと、いまよりずっと、プログラムで自分を表現できる気がします。

*1:絵をうまくなるには、書き方がうまくなることよりも、表現がうまくなることの方が大事というのをどこかで聞きました。それと同じことなのかなと思います。

*2:1から設計するような仕事はレアで、すでにあるプログラムを改修するのが大半だと聞きます。そうなると、今あるプログラムがどのように設計されているかが大事です。