みなさんも以下のような経験は無いだろうか。
過去に作られたプログラムを見たとき、複雑なつくりをしており、何を行う処理なのか判断するまでに時間がかかってしまった。
これには、2つの理由があると思う。
1つめは「プログラムを読む人のスキル不足」
2つめは「プログラムがとても複雑である」
1つめの「プログラムを読む人のスキル不足」については、読む人のスキルなのでその人が勉強するしかない。
がんばって追いつきなさい、という話で終わってしまう。
2つめの「プログラムがとても複雑である」については、そのプログラムを作った人が悪い。
これにも2つの要因があり、以下だと思う。
・作った人のスキル不足により、なんとかかんとかがんばって動くものにした
・作った人のスキルは十分だが、何らかの理由により、複雑にコーディングした
作った人のスキル不足は、残念でした、の話なので終了する。
もうひとつの、この複雑にコーディングしたプログラムについて、今回は書いてみる。
なぜ、複雑にコーディングするのか?
これはその人が頭がよく、効率よくコーディングすることによりプログラムサイズを小さくすることに目を向けてしまった結果の場合が多い。
これでは将来、他の人がそのプログラムを見たときに混乱してしまう。
どんなに読める人でも解読するのに時間がかかることは明白である。
解読できれば良いが、場合により読みきれず誤った調査や修正をしてしまう元となる。
そのため、可能な限りシンプルに分かりやすい処理にすることが大事だと思う。
どうしても複雑なコーディングが必要になる場合には、どういう意図でコーディングしたのかをソースのコメントまたは設計書に記載しておくこと。
シンプルにコーディングできなかった場合には、その理由が必ずあるはずなので、それを後世の人に伝える努力が必要である。
これがあれば、分析をはじめる土台が違う。(0からはじめるか、+5からはじめるか)
また、複雑なコーディングは、大概、数年後に自分で見ても理解が難しい場合が多い。
そのとき、コメントなどがあれば、すぐにそのときに思いを理解得ることができる。
(数年前に書いたプログラムについて、質問されて即答できる人がどれだけいるか?)
このときはこのように考えていたのだから、ここはこういう処理をコーディングしている。
「xxxについての考慮がもれているため、そこをxxxに修正すべきである」というように、先に進むことが出来る。
なぜ、このようにコーディングされているのか分からない場合には
「xxxとしているが、xxxについてコーディングしたときに考慮できていたのか?」から始まるのでは、ぜんぜん違うでしょ?
後半は少し話題がずれてしまったが、コーディングは可能な限りシンプルにすること。
今では複雑したことによる弊害のほうが致命的である。
(昔はマシンの処理能力にも制限があったため、複雑にしないといけないこともあったが、いまはマシンの処理能力が飛躍的に上がっていてるので、気にするレベルではないよね)
なので、シンプルが大事。