見出し画像

良いプログラムとは何か?

良いプログラムとは、再利用性と保守性が高いプログラム。
具体的に、どういったプログラムが再利用性と保守性が高いのか?

それは、一つのロジックが一箇所に書かれているプログラム

これが実現できているプログラムは、本当に楽。システムに変更があった場合、一箇所直せば全て直る。テストも一箇所でOK。
逆に、似たようなロジックが、あちこちに散在しているプログラムは、もう大変。何処に影響があるのか調べて、一つずつ修正を加えて、さらに一つずつテストをする必要があるしね。

ロジックが散在している分だけ作業が増えるし、システムが大きくなればなるほど、手が付けられなくなる。

良くプログラムは凝集度がと結合度が大事だとか、モノシリックに作れとか言われるけど、簡単に言うと一つのロジックは一つの場所に書いてねって言っているだけ。

前回書いた、○○指向もどうやったら、一つのロジックを一箇所に押し込めるか考えて作られたのではないかと思っている。

ただ、一つのロジックを一箇所ににって事葉で言うのは簡単なんだけど、実現するのは難しい。
一つのロジックを一箇所に書く為には、何処までの範囲を同じロジックとして捉えるのか見極めが重要になってくる。

例えば、最近取り組んでいるPythonによるデータ可視化処理について話をすると、

  1. 棒グラフを表示する処理

  2. 縦軸と横軸に目盛りを付けて棒グラフを表示する処理

は、同じロジックして一箇所に書いた方が良い。
2.については、横軸と縦軸を増やしただけで、処理の本質は棒グラフを表示する事で1.と変わらないから、逆にバラバラに書いてしまうと例えば棒グラフの色を青から緑に変えたいといった場合に、両方の処理を修正しないと行けなくなる。
具体的なロジックとしては、1.の棒グラフ表示処理が、以下のようなシンプルな関数(※1)になる。かっこの中が、関数に対する引数。

関数:棒グラフ表示処理(表示データ)

(※1)関数とは、一定の処理をまとめたプログラムの塊

2.の処理は、1.の関数に縦軸、横軸の引数を追加しただけ、関数は増やさない。1と2共通のロジックとする。

関数:棒グラフ表示処理(表示データ、縦軸目盛り、横軸目盛り)

じゃあ、棒グラフに、折れ線グラフも併せて表示する処理は、同じロジックとして一箇所に書いた方が良いのか?
それとも別々に書いた方が良いか?こんなグラフだけど。


これは、棒グラフと折れ線グラフを表示する処理を分けた方が良い。なぜなら今は折れ線グラフと棒グラフとの組み合わせだけかもしれないけど、今後、折れ線グラフと積み上げ面グラフとの組み合わせも出てくる可能性もある。その度に組み合わせの数だけ処理を作る事になってしまい、結局は同じロジックがあちこちに散在する結果となってしまう。

このように、何処までを同じロジックとして捉えるのか将来を見据えながらの見極めが大事になってくる。

繰り返しになるけど、「一つのロジックは一箇所に」

言葉で言うのは簡単だけど、実現するのは難しい。
ただ、プログラムも部屋とか机の上の整理整頓と一緒なので、地道に整理していけば綺麗になるから大丈夫。

■参考文献

この記事が気に入ったらサポートをしてみませんか?