2011年3月3日木曜日

構造化プログラミング

ふと思いついてググったら実在した。
あまり知られていなかったのか、基本中の基本過ぎたのか知る機会がなかった。

自分のようなちっこいプログラムしか書かない小心プログラマには打って付けの手法。
思いついた「構造化プログラミング」はこんな感じ。
my $global = {}; &process_1($global); sub process_1 { my $global = shift; ... return &process_2($global); } sub process_2 { my $global = shift; ... return &process_3($global); } sub process_3 { my $global = shift; ... }
これによってgotoを使う必要が無きに等しくなる。
sub process_1 { my $global = shift; return &process_3($global) // process_3にジャンプし、処理を終える if (exists($global->{'skip'})); return &process_2($global); }
更に、変数のネーミングに困ることが少なくなる。
sub process_1 { my $global = shift; my $var; ... $global->{'var'} = $var; # どこで定義された変数かわかりやすい return &process_2($global); } sub process_2 { my $global = shift; my $var; # 多重定義によるエラーが発生しない # print $global->{'var'}; ... return &process_3($global); }

gotoは「使わなくて済む」のであって「使わない(使ってはならない)」のではない。
必要になることは多々あるし、無理に避ける必要は全く無い。

オブジェクト指向プログラミングとの関係について弾さんが記事にしていた。
オブジェクトというのは、「使う」のは簡単でも、「作る」のは大変なのだ。には大いに共感。
404 Blog Not Found:オブジェクト指向は構造化の「次」か?

オブジェクト指向はあくまで「クラスとして表現するもの」であって「メイン」にはなれないと思うな。

0 件のコメント:

コメントを投稿