C言語なら俺に聞け(入門篇) Part 29 at TECH
[2ch|▼Menu]
737:デフォルトの名無しさん
08/06/10 13:23:51
>>729
Cやその他の構造化言語を使うほぼ全ての人が、みだりに goto を使うことはよくないと考えている。
構造化プログラミングの恩恵は、コードの総体が構造的であるときに最もよく受けられるものだが、
goto はまったく構造的でないからである。特に複数の人間が長期に渡ってプロジェクトに関わるような
プログラム開発の現場では、保守性を低下させるとの観点から絶対に認めないとする場合も多い。

goto を使いたくなる全ての場面は、goto を使わなくても構造的な手法によって解決することができる。
特に小さいけれど結構ややこしい処理を敢えて関数に分割することで解決することができる。
あるいはちょっと手間をかけてフラグ変数を配備したり、ブロックの構成を工夫することなどがある。

しかし、ある種の処理を行う場合には goto を使うことをためらうことはないと考えている人も少なくはない。
最たるものはエラー処理である。エラーというものはその性質上、予定していた処理を全て切り上げて
制御を呼び出し元に返すことになる場合がほとんどだが、プログラムが複雑なものになってくると、
特にメモリの動的な割り付けを噛ませている場合などは、率直に return する前のちょっとした後片付けが
どうしても必要になってくることが多々ある。もちろんこれは構造的に解決することができるものであるが、
しかし構造が複雑化して却って可読性が低下したり、やたらと細かい関数分割になってしまう場合もある。
そういうことを嫌う人は、関数の末尾にだけジャンプして最低限の後始末だけを行うという限定つきで、
goto を使うことを容認していることがある。

構造化と効率は決してトレードオフの関係ではないが、どんな場合でも構造化を押し通そうとすると、
性能や保守性を低下させてしまうこともある。プログラムは常に構造的に書くことができるけれど、
プログラムで実際に解決しようとしている現実の諸問題、そして人間の思考方式そのものは、
必ずしも構造的でないからである。もちろん大抵は取るに足らない性能差で、コンパイラの最適化や
プロセッサの能力で消されてしまうが、問題となることももちろんある。そのような場面に直面したとき、
ここは goto を使うべきだと信じるなら、そうすればよい。それ以外では思いとどまったほうが無難である。


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5147日前に更新/203 KB
担当:undef