- ベストアンサー
JavaにはなぜGO TO 命令がないのでしょうか?
皆さん教えて下さい。私はCOBOLを長年手がけ、最近Javaを勉強している者です。 JavaにはなぜGO TO 命令がないのでしょうか? IF ネストというのは、わかりにくく、私は昔から嫌っておりました。 ところがJavaにはGO TO 命令が無いため、いやでもIF ネストを使わねばならないようです。 それともわかりやすく効率的なコーディングが別にあるのでしょうか?? 3択の問題で、下記AはJavaの教科書的コーディングです。3択だからまだしも複雑になると、IFネストはわかりにくいと私は思います。 下記Bはわかりやすいですが、無駄な処理が発生し、良くないコーディング例です。 下記CはCOBOLコ-ディングで、GO TOが使えるため、人間が読んでわかりやすく、処理効率もいいです。 ●この点Javaをやっている皆さんどうお考えですか??? ------------------------------------------------------------------------------------ A<教科書的サンプル> if(a > 0){ System.out.println("aは正の値です。"); }else if(a == 0){ System.out.println("aはゼロです。"); }else{ System.out.println("aは負の値です。"); } ------------------------------------------------------------------------------------ B<if ネストを嫌った サンプル> if(a > 0){System.out.println("aは正の値です。");} if(a == 0){System.out.println("aはゼロです。");} if (a < 0){System.out.println("aは負の値です。");} 処理効率悪く、良くないプログラム例 ------------------------------------------------------------------------------------ C<COBOL なら> IF a > 0 DISPLAY "aは正の値です。" GO TO OWARI. IF a = 0 DISPLAY " aはゼロです。" GO TO OWARI. IF a < 0 DISPLAY " aは負の値です。" . OWARI. . GO TO 命令がある故に効率的 IF 構文の終わりと、OWARI の後ろにピリオドがあります。 ------------------------------------------------------------------------------------
- みんなの回答 (19)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (18)
- choconamacream
- ベストアンサー率44% (152/338)
- Tacosan
- ベストアンサー率23% (3656/15482)
- atse
- ベストアンサー率83% (36/43)
- moritan2
- ベストアンサー率25% (168/670)
- BetaNona
- ベストアンサー率50% (1/2)
- Tacosan
- ベストアンサー率23% (3656/15482)
- Tacosan
- ベストアンサー率23% (3656/15482)
- foxa-gogo
- ベストアンサー率44% (38/85)
- 1
- 2
お礼
buriです、本当はもっと前に書きたかったですが、この回答欄は1000文字までなので書けなかったことです。goto文を排斥する構造化論者は昔から居ました。でも私は次のようにしていました。 COBOLであっても、なるべく、1つのプログラム(大体2000から3000ステップ以下)の中でも、概ね60行くらい(なぜ60かというとラインプリンタ1頁分が60行位だから=即ち1目で見える範囲)に収まるようなるべくモジュール化を考える。 goto文での飛び先はなるべくそのモジュールの中に留める。 いくら何でも2000行の中であちこちgotoで飛んだらそれはスパゲッティプログラムそのもの、話になりません。 goto文を排斥するのは、包丁が人殺しに使われるから禁止するのと同じと思いますよ。 昔の構造化論者も実務を知らない学者が多かったと思います。 さてこの目でJavaの構文を見るとgotoを排斥したが故に無理をしてるなーと思います。 どこが?ともし御質問あれば、次回に。何しろ1000文字の制限はきつい。