methaneのブログ

このブログに乗せているサンプルコードはすべてNYSLです。

flow considered harmful

http://d.hatena.ne.jp/methane/20060805/1154751836 の続き。

フローチャートはフローを表現するが、フローの根拠を示さない。たとえば、AとBという処理があったとき、フローチャートではA→BもしくはB→Aしか表現できない。
でも、実際には、AとBが独立している可能性だってある。A→Bという順で処理されるプログラムをB→Aと書き換えても問題なかったり、マルチスレッドで並列実行しても良いかもしれない。そして、AとBを独立させることができるのならば、独立させた方が良い。
物事をフロー中心に考えてしまうと、できるだけ独立させるという習慣が育たない。フロー図なんて書いてると本来必要ない依存関係が大量に出来てしまう。


副作用はできるだけ少なくし、それでも起こる副作用(イベントドリブンプログラムの状態遷移や、外界へのアクセス等)はモジュール化によりできるだけ閉じこめて狭いスコープで考える。これが出来てないプログラマOOPをサポートした言語と関数型言語を、その言語の文化が身につくまで習得すると良い。