評価順そういや、仕事を始めた頃、ボトムアップアプローチ(サブルーチンの1番リーフにあたる部分から作っていって最後に幹を作る)てのと、トップダウンアプローチ(最初に幹を作って最後に葉を実装/設計する)てのの2種類があります、みたいなことを教わった。とっくの昔に会社を抜け出して某所でどうも偉い人になってるらしき先輩がボトムアップの得意な人で、作りかけのプログラムを見るとサブルーチンがぼこぼこあるだけなんだけど、最後はカチッとそれが組み合わさるって感じでえらく感心したことがある。僕は1つのことに集中してやるのが嫌いなので同時進行でメインとサブルーチンを作っていくことが多かったので、とうてい、そんな開発スタイルは取れなかったが、それでもわりとトップダウン的なような感じなのは全体の流れから葉を決めていくような感じだったかなぁ。今はわりとリファクタリングしながら作るからどちらかというとやっぱりトップダウンのような(全体から部分を切り出して行くことが多い)アプローチに近いのかなぁ、とはいうものの、最初にクラスにどう分割するか大雑把には決めてから取り掛かるからその意味ではボトムアップ的なような感じだが......というようなことをruby-list見てて、急に思い出したのは、ボトムアップ/トップダウンなんて考え方自体、この10年くらい意識していないように思えたからだ。オブジェクト指向プログラミングだとそのへんどうなんだろうかとか興味を持ってメイヤーの本を見るとトップダウンのオブジェクト指向設計法を想像する人もいるだろうが、オブジェクト指向設計にはボトムアップ設計のほうがずっと合っているようである。"トップダウン"と"ボトムアップ"はもちろん極端な特殊化である。......クラスは、本質的にボトムアップ的な再利用、拡張、組み合わせに適している。......したがって、継承は欠かせない要素である。ボトムアップ設計「オブジェクト指向入門」となっているが、今となっては継承と言えばテンプレートメソッドなんていうのは、トップダウンで考えなきゃだめなような気がするんだが。ユースケース主導だとやっぱりトップダウンのような。#だから、極端な特殊化するなって。いう分類はあまり意味がないということを書いているんだろう。解説書だから人口に膾炙した用語との関連を示す必要があったってことで。・スクリプト上からだらだらいきます。__FILE__でmainの実装でFAなのかな?って、そう書いているな、実際問題として。Javaで書くときは完全に下のスタイルだし(最後にmainの記述がある場合もある)。ことはボトムアップなのかな。