オブジェクト指向言語が与えた開発手法への変化(3)

今回はリファクタリングについて書こうと思っていたのですが、書いてみたら長くなったので別記事にしようと思います。なので次にいきます。

章立てをして見出しを決める

この「見出しを決める」という行為は、その章の内容を一言で表現できる言葉を見つける、という行為だと思います。まあ、章を読ませるために思わせぶりな見出しをつけることもあるでしょうが、大抵の場合は一言要約的なものか、重要と思う事を見出しにするはずです。

自分の言いたいことを一言で要約するのは結構難しいですね。書いている内にいろいろ発散してきたり、書かなければいけないことに気がついたり。それに比べると、長くだらだらと思ったことを書くのは楽です(このBLOGのように)

ここらへん、オブジェクト指向開発の設計工程における「抽象化」と似ていると思うんです。「抽象化」はオブジェクト指向の設計において最重要テーマであり、それ以前の設計から見ると新しい概念です。ここを理解できるかどうかでオブジェクト指向に対する見方は180度変わるといっても良いくらいです。

しかし抽象化をどう説明するべきか、は大変難しい問題。どう説明してもフワフワするので、「本を作る」という隠喩(メタファー)を通じて、オブジェクト指向にこだわりを持つ厄介な人達w(以下OO厨と略す) が何を重視しているのか? を伝えたいわけです。

さて話を戻します。見出しやタイトルを考える作業と設計における抽象化、が似ていると思う点は両者とも本質の見極め、抜き出し作業だと思うからです。前者は自分の書きたいことの本質を伝える一言を見つけ出す作業。後者は対象クラスが持つ「〇〇らしさを決定づける重要なこと、本質とは何か?」を見極める作業。

この2つの作業は結構似ています。しかも、この作業の比較分析はオブジェクト指向開発のプロセスに起こったある重要な変化について説明するには良い題材だったりします。が、比較分析に関しては次回。

とりあえずまとめ

さて、なぜ「本を作る」という隠喩(メタファー)にしたのか?

それは、ある程度の長さプログラムを書いたことがある人は多くありませんが、ある程度の長さの文章を書いたことは誰にでもあるだろうからメタファーとしては良質だと考えた、という事。もうひとつは、同じ内容のことを別の表現に「書き直すこと」について考えてほしかった事、が理由です。

BLOGでも記事でも本でも何でもいいのですが、一度書いたものを読みなおしたり書きなおしたりせずに公開するだろうか? と考えれば、誰だって「読みなおすし、書き直すよ。当たり前だろ?」 と答えるでしょう。

しかし、それをプログラムに置き換えると変な回答をする人達が出てくる。曰く「プログラム書きなおしたらバグがでるからやめろ。動いているそのままの君でいいんだ。そのままの君でいて(意訳)」と。言いたいことはよくわかります。

が、あなたは思うままに書いた文を見直しもせずに、卒業文集に載せるのかと! 一生モンの羞恥プレイをするのかと! 小一時間問い詰めたい

文を書くなら「見直し、書き直す事が当たり前」に思えるのに、プログラムとなると「書き直し(≒リファクタリング)は、バグだ、コストだ」と暴れん坊将軍が馬にムチを入れだす始末。吉宗に犬鍋、そんな気分。

リファクタリングの価値に気が付きにくいのは、オブジェクト指向開発の設計工程に重要な変化が起きた、ということに気がついていないから、だと思っています。

その為、次回は「設計工程におきた重要な変化」について掘り下げていこうと思います。

# よくよく考えたら、オブジェクト指向言語初心者向けに書き始めていたのに、
# いつの間にか管理者説得向け記事になっていましたw
# 思うままに書いた結果このザマだよ!! orz
# 抽象化がどうにも伝えづらいので、これら記事の前にコードベースで抽象化に
# ついて説明する記事を書いておけばよかったと今さらながら反省しております。
# 書き始めると書きたいことがどんどん増えていくため当初考えていたより
# だいぶ長くなってしまってグダグダ感に拍車をかけているのが現状です。
# おれの見積り精度低!!
# ということで、まだグダグダと記事が続きますが
# お付き合いいただけるとありがたいです。