ソフトウェアのプログラムは「内部構造」を持ちます。
古くは「階層化されたモジュール構造」、近年では「オブジェクトモデル」などと言われるものです。
この構造の設計のことを「内部設計」とか「詳細設計」と呼びます。
で、ですね。
結構難しいのですこれが。
この設計に失敗すると、とても脆弱な品質の悪いプログラムになります。
ちょっとした仕様追加や仕様変更でも、色々なところに手を入れざるを得なくなり、バグ発生の要因にもなります。
反対に、センスある人がうまく設計すると、とても品質の良いプログラムになり、メンテナンスも容易です。
どうやったらうまく設計できるか。
簡単な正解はなかなか見つからないのですが、ひとつだけ、私が当社の技術者に常日頃から言っていることがあります。
「『そのオブジェクト/モジュールはどういう機能を持つものですか?』という質問に、一言で答えられるような設計をしよう」
ということです。
「オブジェクト/モジュール」が上位に行けば行くほど、その一言は「抽象化」され、下位に行くほど「具体化」されます。
いわゆる「オブジェクト指向」の基本ですね。
どちらにしても「一言で言えること」が大切で、あまり良くない設計になればなるほど、説明がだんだんと複雑になっていく傾向があります。
「○○が××の場合は△△を■■するための処理をして、それ以外の場合は似たような処理だけど◇◇を□□しない処理を行うモジュールです」
とか、ね。
反対に、良い設計の場合は、
「○○を△△するモジュールです」とか、
「××するための機能を持つオブジェクトです」などと、本当に一言で説明できることが多いです。
さあ、今まさにクラス設計とか共通モジュールを作成しようとしている若きITエンジニアの皆さん。
その機能、一言で説明できますか?