goto文の闇 †go to文は極力使用を避けたいと基本方針で書いた.詳細を以下に. goto文を使うことの欠点 †
以上の理由より,goto文は避けたい.改善例を以下に示す. (1) if,go to~continue(ループの末尾)はcycleで代用 †まず,doループの結語には,enddoとcontinueの2通りがある. !!例1 do I=IS,IE ...(何か).... if(hoge) cycle .... enddo !!例2 do 501 I=IS,IE ...(何か).... if(hoge) goto 501 .... 501 continue 人によっては,例2の方が見やすいかも.しかし,continueはdo文の結語以外にも利用できるので,他と混同される可能性がある. (2)if,go to~continue(ループの末尾以外)はif(not),thenで代用 †gotoの先がdo文の終端でない場合には,if(hoge)then→endifで代用する. !(修正前) if(hoge) goto 501 ...(処理A).. 501 continue ...(処理B)... !(修正後) if (not(hoge))then ...(処理A).. endif ...(処理B)... (3)文番号を使用する方が見やすい場合もあるけれども… †なるべくインデントで代用したい. |