http://d.hatena.ne.jp/cubicdaiya/20070507/1178546005
ただ、前にこんなことを書いて、
そもそも、関数を引数にするということは、静的に流れが読めなくなるので、上流工程とか、形式的なプログラム検証からすると、非常に困る。
というふうに、ある人からお叱りを受けたことを考えると、
まず、関数を引数にすること≠静的に動作が予測不可能。
例えば、sort関数に、比較関数を渡すことで任意の順序で並べ替える。これは、完全に予測可能で、検証可能。
じゃぁ何をすると静的な動作の予測が困難になるかというと、callback関数を渡すとか、イベントハンドラをオーバーライドするとか。関数がどんなタイミングで呼ばれるかが外部依存になると、動的な動作を考えながらプログラムを書かないといけなくなる。
え、callbackとか使わずに、switch文使えって?下位層が上位層に依存するの?そんな設計を良いという人とは仕事したくないな。
え、関数呼び出し構造を出力するツールが使えなくなるって?知るかそんなの。