
No.8
- 回答日時:
ループの中に入るときに、処理するパラメータが不定のままの可能性があるならばよろしくないでしょうね。
かならず一回はループしてしまうわけですから。
可読性よりも重要かと。
私の場合は、ループに入る前に例外を除外してから処理するようにしてます。そのほうがループ内の処理が短縮できるから。だって、for/whileだろうが余計なif文が100万回(例えばね)ループすると思うといやです。
御回答ありがとうございます。
確かに、通常のフローよりもループの方が不定パラメータの問題は大きそうですね。
それを一々ソースの中でチェックする手間が余計だという観点で
禁止されているのかもしれません。
頂いた御意見を参考に、自分なりにもう少し考えてみようと思います。
どうもありがとうございました。
No.6ベストアンサー
- 回答日時:
前にも書いたようにdo-whileを禁止する理由はどう考えても見当たりません。
逆に規約の有無に関わらず、問答無用で禁止なのは、振る舞いが未定義や不定になるものです。処理系定義のものは(なるべく避けるべきですが)状況次第では許容されるでしょう。
動作が未定義になるもので、意外にやってしまいがちなのは、
・空でないソースの最後が改行で終わっていない(ISO/IEC 9899:1999 5.1.1.2)
・下線で始まるマクロを定義してしまう(同 7.1.3)
といったものがあります。
後は、なるべく一貫性のあるコーディングをすることが大切ですね。書式だけでなく、命名方法まで含めて。
御回答ありがとうございます。
未定義や不定動作、確かに問題ですね。
gotoが禁止される理由は可読性だけではないと感じました。
御指摘の2点、後学の参考にさせて頂きます。
どうもありがとうございました。
No.5
- 回答日時:
Do-whileは禁止しなくてもいいとおもうけど・・・
もちろん、流れ的にwhileが適当なら無理にdo-whileを
使う必要は無いと思いますが・・・
あと、盲目的に禁止してしまうのがgotoですが、
なぜ禁止かというと、プログラムの流れが複雑になる。
というのが大方の理由かと思います。
まぁ、たいてい有無を言わさず禁止するでしょうけど。
しかし、私は流れを簡略化するgotoはOKな考えで、
多重にネストが掛かった最内から、一番外のネストからの脱出のみ使用可としています。
条件分岐使ってbreakの繰り返しは見るのもいやなんで・・・
でも、一度もそんなコードになったことは無いですが(笑
いずれにせよ、流れが読みやすいのであれば、問題は無いはずです。
ただ、プロジェクト自体の規約があるので、なんでもかんでもといのは無理でしょうけど。
御回答ありがとうございます。
私は多重ネストからのbreakは苦にしないのですが、
確かにあまり見栄えの良いものではありませんね。
gotoに関しては、例外処理でたまにお世話になるかな、という程度のことは考えていました。
以前読んだ解説書にも、例外処理ならばgotoが適当な場面があると解説されていましたので…
No.4
- 回答日時:
コーディング規約とはローカルなもので、そのプロジェクトのリーダーさんが決めるわけですから、従わなければなりません。
理由はリーダーさんに聞くべきです。もっとも、コーディング規約というものは、見直しもされずに機械的にコピーが配布される悪い面があり、正しくはプロジェクトごとに規約の一つ一つを見直してから修正を加えて配布すべきです。
一般には使用を禁止する筋合いのものではなく、規約に載っていなくても、禁止すべきは"goto"文でしょう。
御回答ありがとうございます。
私もリーダーに問い合わせてみたのですが、
以前のプロジェクトからそのまま引っ張ってきた規約らしく、
本人もよく理由が分かっていないようでした。
gotoのような一方通行の制御については、
直感的に「やらないほうがいい」と理解できるのですが、
do-whileは別に一方通行でもなんでもありませんよね…
No.3
- 回答日時:
No.2のTT414です
>No.1の方に賛成です。
>do
「do」以下の文章の文章は「No.1の方に賛成です。」の文章の説明ではありません、「No.1の方に賛成です。」の内容とは別の意味の追加意見です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- 英語 Once it is anticipated that the possibility of a b 1 2023/03/04 09:14
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) Excel VBA マクロ ブロック崩しのコードについて。 1 2022/06/22 12:33
- 英語 (前文)-turning up the volume on the bicycle trend wh 1 2023/02/08 15:57
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
do-while文が禁止される理由
-
入力した数値を倍々するプログラム
-
ループを途中で抜けたいのですが。
-
C言語forループが完結した場合...
-
入力した文字列から母音だけを...
-
H8/3048マイコンAD/DA変換について
-
C言語、whileループを抜け出す...
-
Cプログラムが終了しない
-
Matlabを使った心理学実験
-
桁数を求めるプログラム。
-
ループの特定入力終了
-
if文でスキップしたい場合は?
-
PAD図の書き方
-
プログラムで関数は使わない方...
-
strstr()関数の実装内容について。
-
他言語で言うcontinue文
-
if文の中にfor文なのか、for文...
-
excel VBA if文について
-
For文の終了値を関数にしても問...
-
基本情報技術平成21年春午後問8...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
do-while文が禁止される理由
-
ループを途中で抜けたいのですが。
-
Excel VBAで年度をまたぐ期間の...
-
C言語forループが完結した場合...
-
UWSCにてある一定の動作を無限...
-
入力した文字列から母音だけを...
-
excel VBA if文について
-
プログラムで関数は使わない方...
-
C++のvolatileについて
-
入力した数値を倍々するプログラム
-
For文の終了値を関数にしても問...
-
break文でループを一気に抜ける...
-
Delphiで・・・
-
if文の中にfor文なのか、for文...
-
for文while文の無限ループの違...
-
PIC のプログラムについて ど...
-
他言語で言うcontinue文
-
PAD図の書き方
-
C言語、whileループを抜け出す...
-
clock関数を利用した時間計測法...
おすすめ情報