質問です

条件分岐であっちこっちにgotoするような処理が必要なpgを書いてるんですが、gotoはあまり無暗に
使うべきではないというような記述をちらほら見かけます

で、なるべく機能をサブルーチン化して呼び出す事で実現しているんですが、
エラー処理などでサブルーチン内の何でもないような所に飛ぶ必要が出てきました
(例えば単に関数を呼び出すだけの所や、if文の頭など)

こういった場合はgotoを使うのも止む無しといったところなんでしょうか?

それとも飛ぶ必要があるところは全て関数化するとか、無理やりwhile(1){} とか
if文をwhileで置き換えてループ化してnext、last等で書くほうがスマートなんでしょうか、、、?