変数のスコープがどうこうだとか、1関数の行数は何行までとか、重複を共通化するとか、プログラムをよくするというテクニックがあるけど、あれいつも疑問に思ってた。 果たして、そんな単純なルールでプログラムが良くなるものかと。 プログラムというのは手続きであって、よいプログラムというのはよい手続きのことだ。 データ構造も結局のところよい手続きのためにあるのであって、データ構造としてきれいな形だったとしても手続きに無理がでるのであれば、そんなデータ構造を使うプログラムはよいプログラムではない。 そう考えると、たとえばひどい手続きのプログラムがあったとして、いくらそのひどい手続きの重複を共通化しても、短い関数にぶったぎっても、オブジェクト指向やなんやで条件分岐構文をなくしても、変数のスコープをせまくしても、ひどい手続きはひどい手続きのままだ。 それどころか、ひどい手続きにプログラムテクニックを適用する