トップページ⇒tech
1001コメント305KB

gotoを恐れず使う兵共がfinallyや多重breakを語るスレ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/08/11(木) 11:18:15
前スレ http://pc8.2ch.net/test/read.cgi/tech/1021364372/
0412デフォルトの名無しさん2008/02/11(月) 22:31:56
>>411
ごめん、俺「関数のreturnは必ず一箇所でやる」ポリシーもってるから、
全部レビュー対象となる^^
0413デフォルトの名無しさん2008/02/11(月) 22:33:39
>>412
^^と書いているが俺が去年やってたプロジェクトだと笑い事じゃなくて実際そうなる。
0414デフォルトの名無しさん2008/02/11(月) 22:36:42
具体的に言うと、gotoを使っている関数は
フローチャートおよび詳細な動作説明をドキュメントとして準備してコードレビュー。
もちろんそういうドキュメントを用意してレビュー会で説明するのは実装者。
承認となった場合もドキュメントは保管。

なので濫用する奴なんか自然といなくなる。
誰も濫用しないから何万行のレビューなんてのも実際は発生しない。
無問題。
0415デフォルトの名無しさん2008/02/11(月) 22:41:30
goto使ってる関数だけって、、、
あほらし。
0416デフォルトの名無しさん2008/02/11(月) 22:45:08
if と if and only if の区別も付かない奴か。
0417デフォルトの名無しさん2008/02/11(月) 22:49:57
>>414
それだけだとgoto濫用防止だけだけど、ホカにはどんなルールをきめてるん?
0418デフォルトの名無しさん2008/02/11(月) 22:52:23
>>414
それとさ、組み込み系だとファンクショントレース機能があるICEとか
結構効果なのだけどさ、それも全開発者に配布?
0419デフォルトの名無しさん2008/02/11(月) 22:52:57
結構効果なのだけどさ→結構高価なのだけどさ
0420デフォルトの名無しさん2008/02/11(月) 22:55:55
>>417
あれこれ言ったら個人特定されるでしょ

単純なのは、一関数が一定の行数を超えたらとか
for文で()の中に書く内容が「普通じゃない」とか

ちなみに>>412の理由だけでgotoを使った場合はレビューで却下だよ。
0421デフォルトの名無しさん2008/02/11(月) 22:58:23
>>420
世の中にドレダケぷろじぇくとまねーじゃが存在しているのか考えれば、
あなたがやっていることと同じようなことをやっている人は無数にいるから、
特定なんてされないと思うぞw
0422デフォルトの名無しさん2008/02/11(月) 22:59:17
>>421
じゃあ先に君の関わったプロジェクトで採用されていたルールを教えてくれ
0423デフォルトの名無しさん2008/02/11(月) 22:59:32
>>420
「普通じゃない」とかの基準で、資料作成させられて説明させられる
プログラマかわいそすwww

もうちょいまともな基準作ったほうがイインジャナイ?
0424デフォルトの名無しさん2008/02/11(月) 23:00:47
んーとね。いちいち説明しないとわからんかな。

何が「普通」かは実際には定義されているの。ここでは書かないけど。
簡単に言えばループ変数の初期化、終了条件、増分を普通に書くのが普通
0425デフォルトの名無しさん2008/02/11(月) 23:01:39
>>423
説明するのが手間になるようなコードを書くほうが悪いと思うが。
0426デフォルトの名無しさん2008/02/11(月) 23:01:56
>>424
「なにが普通か」の基準をきめるための努力は世の中に一杯あって、
基準めいたものもあるんじゃない?
0427デフォルトの名無しさん2008/02/11(月) 23:02:46
>>425
え〜だって、俺様基準で「普通じゃないから」っていわれて、「フローチャート」
まで用意させられるのだぜw
0428デフォルトの名無しさん2008/02/11(月) 23:06:57
>>427
フローチャートはgotoの場合じゃないの?
forの場合には何かトリッキーな式を書いた場合に
そのトリッキーな式がなぜ必要なのかを説明する
ドキュメント+プレゼンとかそんな感じだと思うが。
0429デフォルトの名無しさん2008/02/11(月) 23:07:59
>>427
俺様標準じゃなくて、一応条件が示されてるらしいぞ。
まあ俺には関係ない話だからどうでもいいと言えばどうでもいいが。
0430デフォルトの名無しさん2008/02/11(月) 23:08:47
gotoに拘る人間に100k行以上の開発蓄積のある人間はいない。
0431デフォルトの名無しさん2008/02/11(月) 23:10:11
1m行ならわからんでもないがさすがに100k行くらいは新人以外誰でも書いてるだろ
0432デフォルトの名無しさん2008/02/11(月) 23:10:18
好意のは時代を超えて無内容さが変わらないものだな
0433デフォルトの名無しさん2008/02/11(月) 23:10:29
>>430
goto厨のコードを読めば、それは明らかだな。
0434デフォルトの名無しさん2008/02/11(月) 23:12:43
>>431
1本の開発で一人100k行、の間違いじゃねーの?
0435デフォルトの名無しさん2008/02/11(月) 23:13:56
そかも
0436デフォルトの名無しさん2008/02/11(月) 23:16:18
goto使ったら詳細資料を用意しなければならないって、
使いたいとこでも使えないじゃねぇか。開発効率悪そう。
0437デフォルトの名無しさん2008/02/11(月) 23:18:36
>>436
goto使うだけの理由があればそれを書けばいいんじゃないの?
処理の流れをちゃんと把握できていればフローチャートだって
簡単に書けるし。

それとも実装ドキュメントの類いを一切書かない人?
0438デフォルトの名無しさん2008/02/11(月) 23:19:10
>>429
いやさ、その根拠が多くの開発者が納得いくものであればいいが、
「goto使ったら、フローチャート描かせて、説明させる。」っていってる
ようなやつが、まともな基準を示せるとは到底思えないのよね。
0439デフォルトの名無しさん2008/02/11(月) 23:20:17
フローチャート書ける程度のショボイ処理ならgotoいらないだろ
0440デフォルトの名無しさん2008/02/11(月) 23:22:47
>>436
わかって使っている人にとってはその通り。
ただし、こういうレビューの目的の半分は、
将来そのコードの面倒を見る他社のために実装資料を残すこと。
それが、大人のマナー
0441デフォルトの名無しさん2008/02/11(月) 23:24:07
>>437
だからさ、goto使うだけでフローチャート書けっていってるのは、
基準が曖昧すぎるといってるのよ。別にgotoが適切な場合もあるし、
そうでない場合もある。whileが適切でない場合もあるし、そうで
ない場合もある。

そんなこといってたら、すべてのプログラムにたいして全部
フローチャート書けという事になるわけで。
0442デフォルトの名無しさん2008/02/11(月) 23:24:44
フローチャート(笑)
0443デフォルトの名無しさん2008/02/11(月) 23:26:59
他社とは限らないな。自社の別チームでも何でも。
要するに、今の実装チームが未来永劫メンテするわけじゃないということ
0444デフォルトの名無しさん2008/02/11(月) 23:29:30
>>443
せめてさ、世の中に「メンテナンス性が高いプログラム」を判別しようとする
努力があって、そのための基準が研究されている事実くらい勉強した上で
そういうこといったほうがいいんじゃない?

goto使ったらコードレビューだ!とかじゃなくてさ。
0445デフォルトの名無しさん2008/02/11(月) 23:30:09
可読性の定量化なぞ不可能さ。
管理面でどうしても何かしたいならば。
goto使用許可を出せる権限を
誰かに付与すればイイんじゃね?
0446デフォルトの名無しさん2008/02/11(月) 23:34:14
>>441
gotoは他の構文要素と比較して、適切に使われない場合が多いという
共通認識があるからこそ、このスレも成立していると思うんだが。

適切なgotoもそうでないgotoもあり、適切なwhileもそうでないwhileもある。
だから全部やるか何もやらないかどちらかにしろ・・・では物は作れない。
現実的な判断として、かけるコストを回収できる効果があるかどうか。

というのが常識として書いていたが、考えてみればここはマ板でなく
ム板だから学生や研究者も当然いるのか。
0447デフォルトの名無しさん2008/02/11(月) 23:38:10
>>446
いや、あなたがいままで言ったような判断基準より、ましな判定基準を
提供するツールはあるし(商用、フリーかかわらず)、そのことすら
知らないまま、ぷろじぇくとまねぇじゃぁをやるのは周囲を不幸にするよ、
といってるだけだけど。
0448デフォルトの名無しさん2008/02/11(月) 23:38:10
>>444
浅学にして知らなかった。ポインタを示してもらえるかな。
研究者ではないので、俺はそういう勉強は足りないと自分でも思う。
0449デフォルトの名無しさん2008/02/11(月) 23:40:22
ところで、俺はそういうプロジェクトに開発者として関わっていたのだが
どこからプロジェクトマネージャという誤解が発生しているのかな
0450デフォルトの名無しさん2008/02/11(月) 23:40:51
コードレビューするのは結構なことだが、
くだらない決まり作って、くだらない作業させるようなプロジェクトは、
メンバのモチベーションも低いだろ。
0451デフォルトの名無しさん2008/02/11(月) 23:50:07
>>448
とりあえず「複雑度」でぐぐってこいw
0452デフォルトの名無しさん2008/02/11(月) 23:51:32
人の意見に文句だけいって自分は何も提供しない人って周囲のモチベーションさげるよねw
他の人、自分のかかわってたプロジェクトではどうだったのさ。
最低限そのくらい言ったら?
0453デフォルトの名無しさん2008/02/11(月) 23:55:58
>>452
お前は、ナニサマナンダ
0454デフォルトの名無しさん2008/02/12(火) 00:01:22
>>451
情報感謝。そういえば、そういうのも何か使ったことはあった。
ただ、そのプロジェクトだと単にビルド時に出していただけで、
それがどう使われていたのか知らない。値が高くても低くても特に何もなかった。

その値に適当な閾値を決めてレビューとかやればいいのか?
実際にプロジェクトでどういう運用がされていて、効果がどうだったのかとか、
そういう感想もあれば是非
0455デフォルトの名無しさん2008/02/12(火) 00:05:25
これ以上ないくらいスレ違いだな
0456デフォルトの名無しさん2008/02/12(火) 00:07:52
>>454
閾値はあるていどキビシ目にきめたほうがいいが、実際にレビューするか
どうかは、閾値が異常な値を示しているコードがバグを良く出すとか、
新規作成のものであるかとかいう事情を加味して考慮したほうがいい。

安定して動作しているモジュールを閾値より外れているから、といって
リファクタリングしたところで新たな不具合を生み出すだけ。
目的を見失わないようにしながら、やればいい。

しかし複雑度の計測もマダマダであって、あくまで一つの参考にしか
ならないが。
0457デフォルトの名無しさん2008/02/12(火) 00:45:08
こないだ、goto文が使われているコードを
昔作ったものから持ってった。 キー入力の評価だから
これ以上重たくしたくもない・・・というところ。

select 文二重+if文の底から出るのに breakを掛けるのは・・・
0458デフォルトの名無しさん2008/02/12(火) 00:48:03
世の中のプロジェクトは、まだまだ、リーダーとかマネージャとか上司とかの
「コーディング規約」(訳:俺の理解できない しんきのう は使うな)
が支配的なのな。
0459デフォルトの名無しさん2008/02/12(火) 00:53:03
分野によるが、多人数が関る(新人やアホが混じりやすい)プロジェクトでは必須
MISRA-Cとか
0460デフォルトの名無しさん2008/02/12(火) 00:59:27
MISRA-Cってどの程度使われてるのかね

それはさておき、MISRA-Cを適用するような分野に
新人やアホが混じってるというのはガクブルだな
0461デフォルトの名無しさん2008/02/12(火) 01:18:15
MISRA-Cは、新人やアホがまじらないための基準という意味では
まぁ有効だが、そういうやつがいない現場にとっては、無駄な
足かせにしかなっていないという矛盾がある。そして、そういうやつ
が混じらないようにする努力というのは経営陣の仕事であって、現場の
規約を固めるのはあまり意味がない。

ミスを防ぐための基準が、よけいに複雑なコードを生み出して、
逆にミスを生み出してしまうような矛盾が今のMISRA-Cにはある。
0462デフォルトの名無しさん2008/02/12(火) 01:56:39
そういうやつがいない現場の数のほうが少ない
0463デフォルトの名無しさん2008/02/12(火) 07:33:58
結局、まじめに処理構造を見直すのがマンドクセからgoto使うんでしょ。
gotoマンセ君は多人数での開発経験がないんじゃねーの?
0464デフォルトの名無しさん2008/02/12(火) 08:11:19
C覚えて2-3年程度のアマチュアが「goto、ヤベーw」とはしゃいでるだけ。
0465デフォルトの名無しさん2008/02/12(火) 11:30:23
>>463
gotoを使ったほうが可読性が高い場合に遭遇したことが無いね?
0466デフォルトの名無しさん2008/02/12(火) 12:30:26
基本文献はクヌースのStructured Programming with go to Statementsですかね。
あと、このへんで、
ttp://www.cmagazine.jp/src/kinjite/c/coding.html#index32
gotoと同じくらいダメとされている手を、gotoを避けるためだけに
使ってないか? というのは良い指標かと思う。
0467463じゃないが2008/02/12(火) 17:17:23
>>465
もちろんあるけど、しっかり考えれば考えるほど少なくなっていくよ。
0468デフォルトの名無しさん2008/02/12(火) 17:37:19
>>466
break, continueがだめって書いてあるやつ、
使わなかったとしたらどう書く?
ちょっと想像つかない。
0469デフォルトの名無しさん2008/02/12(火) 17:41:08
ちなみにこういうやつ書いたんです。
エラーはエラーなんだけどエラーの種類によって動作を変えるってやつ。
コードの参照は>>469


for i = 0 to 2
IE.navigate(str)
REPEAT; sleep(0.1); UNTIL !IE.busy AND IE.readystate = 4

// エラーページチェック
errortitles[4] = Status(ID, ST_TITLE)
for e = 0 to 4
ifb 1 <= Pos(errortitles[e], errortitles[4]) Then
select e
case 4 // エラーがなければ続行する。
break 2
case 0 // 接続エラーなら規定回数試行する。
sleep(2)
continue 2
default // その他エラーならエラー終了する。
SendSTR( メモ帳, errortitles[e] + "<#CR>", 1, false, false )
IE.navigate("about:blank")
result = false
exit
selend
endif
next
// ここには来ないはず
msgbox("エラー判定ミス")
exitexit
next
0470デフォルトの名無しさん2008/02/12(火) 17:43:44
ちなみに>>469のエラーチェックを関数化したやつもあるけど、
エラーの種類ごとに動作を変えるとしたら、
結局呼び出し元でswitchでそれぞれの動作をしないといけない。
0471デフォルトの名無しさん2008/02/12(火) 17:50:14
>>468
breakやcontinueの乱用がだめという話で、
きちんと制御構造がわけるような書き方なら問題ないのでは。
実際List37の例はひどいものだし。
0472デフォルトの名無しさん2008/02/12(火) 19:13:37
>>461
ベテランプログラマだけのユートピアを作るのが経営陣の仕事だぁ?

アホか。
0473デフォルトの名無しさん2008/02/12(火) 21:57:54
アセンブラ上がりのPGだが、JMP系述語+スタック使わないで
処理できて速い方法とか、日々そんなことばかり考えてる。
メンテナンス性以前に、論理的整合性が失われて美しくないから
なんて話は、俺の頭には何のことかさっぱりわからない。
0474デフォルトの名無しさん2008/02/12(火) 22:26:11
ルール:ソースは美しくなければならない
0475デフォルトの名無しさん2008/02/12(火) 22:35:59
美しくなくとも。簡潔で軽妙ならば
0476デフォルトの名無しさん2008/02/12(火) 23:14:11
>>472
新人は情報学科出身で、かつ優秀じゃなきゃイラネ
0477デフォルトの名無しさん2008/02/12(火) 23:38:18
>>469
何段抜けるかを数字で書く多段breakって糞じゃね?
0478デフォルトの名無しさん2008/02/12(火) 23:46:47
>>469
こんなソースを新人が書いたら、確実に書き直させるな。
0479デフォルトの名無しさん2008/02/12(火) 23:55:08
まずもって文法が意味不明なのでとりあえず C 風に書き下してみた。

for (int i = 0; i < 2) {
 IE.navigate(str);
 do {
  sleep(0.1);
 } while (IE.busy || IE.readystate != 4);
 errortitles[4] = Status(ID, ST_TITLE);
 for (int e = 0; e < 4; e++) {
  if (1 <= Pos(errortitles[e], errortitles[4])) {
   switch (e) {
   case 4:
    goto BREAK;
   case 0:
    sleep(2);
    goto CONTINUE;
   default:
    SendSTR(メモ帳, errortitles[4] + "<#CR>", 1, false, false);
    IE.navigate("about:blank");
    result = false;
    exit;
   }
  }
 }
 msgbox("エラー判定ミス");
 exitexit;
CONTINUE:
}
BREAK:
0480デフォルトの名無しさん2008/02/13(水) 00:01:50
>>479
途中で、読む気がうせた
0481デフォルトの名無しさん2008/02/13(水) 00:03:19
VBでもないし何かと思ったらUWSCって何だ
厨房スクリプト言語?
0482デフォルトの名無しさん2008/02/13(水) 00:19:17
ひとまずコード*だけ*読んで、前提条件あんま読んでないけど

>for (int i = 0; i < 2) {
「2回」ループする意図が良くワカラン。下のコード読めばわかるかと思って、
読もうとしたが、途中で挫折。

> IE.navigate(str);
> do {
>  sleep(0.1);
> } while (IE.busy || IE.readystate != 4);
IE.readystate==4だけじゃだめなのかな。IE.busyじゃないときだけ、readystate
が有効になるのか。ならIE.readystateが-1ならbusyとかしたほうが、
"while(IE.readystate!=4)"だけですむしわかりやすい。

> errortitles[4] = Status(ID, ST_TITLE);
errortitles配列の、5番目にいきなり代入してるのが、なんじゃらほい。0〜4番目は、
どうなったのだろう?

> for (int e = 0; e < 4; e++) {
>  if (1 <= Pos(errortitles[e], errortitles[4])) {
このへんと、下をちょっと見た段階でギブアップ
0483デフォルトの名無しさん2008/02/13(水) 00:22:21
余計なものを全部省いて構造だけ残すと、たぶんこう。

void f() {
 while (some_condition()) {
  something();
  for (int e = 0; e <= 4; e++) {
   if (some_condition(e)) {
    switch (e) {
    case 4:
     goto BREAK;
    case 0:
     goto CONTINUE;
    default:
     return;
    }
   }
  }
  exit(-1);
CONTINUE:
 }
BREAK:
 something();
}
0484デフォルトの名無しさん2008/02/13(水) 00:30:02
>>483
やっぱりだめだ・・・こういう感覚を説明して理解してもらえるかわからないが、
そのコードは「普通」じゃない。読むのがすごいシンドイ。
04854832008/02/13(水) 00:32:42
で、俺ならこう書く。
頭の中でしか動かしていないので合ってるかどうかは自信ないが。

void f() {
 int state = 0;
 while (state == 0 && some_condition()) {
  something();
  state = check_state();
 }
 if (state == 4) {
  something();
 }
}

int check_state() {
 for (int e = 0; e <= 4; e++) {
  if (some_condition(e)) {
   return e;
  }
 }
 exit(-1); // not reached
}
0486デフォルトの名無しさん2008/02/13(水) 00:35:50
まだ、java はインタプリタじゃ無い、って言ってるヤツがいるみたいだけど。
中には、インタプリタじゃ無い、ヴァーチャルマシンだ、とか
もっとひどいのになると、エミュレータだ、とか、もうメチャクチャ言いたい放題・・・
ちょっと呆れたな。
これって、「モモヒキじゃ無い、スパッツだよ!」って言ってるオバサンと同じじゃん。
0487デフォルトの名無しさん2008/02/13(水) 00:38:14
>>485
あぁなんとか理解できる。サンクスw
04884832008/02/13(水) 00:52:25
せっかくだから俺からも一つネタ投下。
>>485 のf()と下のコードはどっちが良いと思う?

void f() {
 while (some_condition()) {
  something();
  switch (check_state()) {
  case 0:
   break;
  case 4:
   goto END_WHILE;
  default:
   return;
  }
 }
END_WHILE:
 something();
}
0489デフォルトの名無しさん2008/02/13(水) 00:57:07
>>488
俺は>>488のほうがわかりやすいw
0490デフォルトの名無しさん2008/02/13(水) 01:40:46
>>488
case 4:でsomething呼び出して
returnしてしまえばもっと見やすいと思うが。
0491デフォルトの名無しさん2008/02/13(水) 01:44:51
(ノ∀`) アチャー

977 デフォルトの名無しさん[sage] 2008/02/13(水) 00:31:00
forループのネスト構造(2重)から一気に脱出したい時に、breakだと1重しか脱出できないので困ってます。
PHPではbreak 2;みたいに書くと2重のループから脱出できるみたいなんですが、C++で同じことができる方法はありますか?
goto文はなるべく使いたくないので……。

980 デフォルトの名無しさん[sage] 2008/02/13(水) 00:50:26
>>978
ググった時に「大域脱出するとき例外処理で〜」とか書いてあるのを見たのですが、それでしょうか。

>>979
表を描くために座標をネスト構造で回しているのですが、
描画する要素がなくなったら外に出すっていうようにしたいんです。
大人しくflagにしたほうが良いですね……。ありがとうございました。
0492デフォルトの名無しさん2008/02/13(水) 01:50:32
>>491
コピペもウザイが、意図もよくわからんぞw
0493デフォルトの名無しさん2008/02/13(水) 02:05:31
(ノ∀`) アチャー

984 名前:デフォルトの名無しさん[sage] 投稿日:2008/02/13(水) 01:55:45
>>981
後で困りそうですがもっと単純に解決させました。
ループ部分だけクラス内で別のメンバ関数にして飛ばして、抜けたい所でreturnさせました……。
0494デフォルトの名無しさん2008/02/13(水) 02:36:14
>>479
× for (int e = 0; e < 4; e++) {
○ for (int e = 0; e < 5; e++) {

>>482
> 「2回」ループする意図
ADSLで瞬間的に切断される場合、数秒後に再度アクセスしたら接続される場合があるので。

>IE.readystate==4だけじゃだめなのかな。
やり方をググってまねしただけなんで。

>5番目にいきなり代入してるのが、なんじゃらほい。
終了フラグです。
まあいいやり方じゃないけどエラーを拾う判定がちゃんと働くかテストにもなるしと入れてみた。
代入してるのはウィンドウタイトル。
あと、ループはループだけ、判断は一箇所にすると、制御が単純でわかりやすいなと思ったんだけど、
forを抜けて「ここには来ないはず」と書いた場所でbreakすればいいだけだった。

もともとが長いスクリプトだったからdefaultをexitで抜けてなかったんで
そんときのループ構造が頭にあって。
やっとすっきりしたと思ったんだけど見直せばもっとシンプルになるもんだね。
0495デフォルトの名無しさん2008/02/13(水) 06:20:53
>>486
釣りいいかげんうざい。
あのね、じゃあ具体的にあんたが主張するBASICのようなコードを
JavaVMのバイトコードで示してみやがれっての。できなきゃ去れ。
二度と来るな。
0496デフォルトの名無しさん2008/02/13(水) 07:13:52
>>486
せめてJavaVM実装の書籍を1冊でいいから読破してから言え、マヌケ。
0497デフォルトの名無しさん2008/02/13(水) 07:30:44
まあ多重break/continueは可読性を落とすね。gotoのほうがナンボかマシ。
多重break/continueもgotoも無いのがベストつーか常識だけどw
0498デフォルトの名無しさん2008/02/13(水) 07:53:56
>>494
> やり方をググってまねしただけなんで。

やっぱりね…
そういう姿勢だからbreakでもgotoでも汚ないコードになるんだよ。
0499デフォルトの名無しさん2008/02/13(水) 07:55:56
JavaVMのハードウェア実装を知らないんだろうな、>486は。
0500デフォルトの名無しさん2008/02/13(水) 08:11:16
JVMについて盛り上がっている人がいるようだが、
どのJVMのことだ?sunか?
0501デフォルトの名無しさん2008/02/13(水) 08:12:39
>>500
特定の実装の話じゃないと思うが。つーか、吊りか?
0502デフォルトの名無しさん2008/02/13(水) 08:30:34
ハードウェア実装?
0503デフォルトの名無しさん2008/02/13(水) 08:43:59
荒らしはスルーで > 兵共
0504デフォルトの名無しさん2008/02/13(水) 08:53:16
picoJava のことじゃまいか<ハードウェア実装
0505デフォルトの名無しさん2008/02/13(水) 08:58:45
Jazelleとか。
一部ソフトウエアで実行するけど。
0506デフォルトの名無しさん2008/02/13(水) 09:05:28
いずれにせよBASICインタプリタとは大分違う罠
0507デフォルトの名無しさん2008/02/13(水) 09:16:38
>>498
勝手な思い込みで変更する馬鹿よりましだよ。

ぐぐったら出てくるけど、作業をしているか通信をしているかをチェックするんだって。
通信が完了してから作業をするだろうけど、作業が新しい通信を要求するかもしれないだろ。
どんな流れになるかはWebサイトの作り次第だし、テストするには通信帯域を制限したり・・・

コードの流用するならそれが確かに動くかテストするべきだが、
自分でテストできないなら基本的には信用することが必要だ。
0508デフォルトの名無しさん2008/02/13(水) 09:25:01
busyだけだとフレームのページで途中で抜けちゃうって話がどっかにあった。
まあレイアウトが自由にできる今はフレームなんか使ってないだろうけど。
ReadyStateだけの場合は↓。
つまり両方のチェックが必要。

http://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200510/05100089.txt
IEオブジェクトで読み込み完了まで待たせるのに以下のコードで待たせてますが、
ちゃんと読み込み完了まで待ってくれません。

どのようにすれば確実に待たすことができますか?

Do While IE.ReadyState <> READYSTATE_COMPLETE
DoEvents
Sleep 1
Loop

これならうまくいきました。
Do While IE.Busy = True Or IE.ReadyState <> READYSTATE_COMPLETE
DoEvents
Sleep 1
Loop
0509デフォルトの名無しさん2008/02/13(水) 10:21:31
>>507
> コードの流用するならそれが確かに動くかテストするべきだが、
> 自分でテストできないなら基本的には信用することが必要だ。

唖然・・・
おまえみたいのはgotoを絶対に使うべきじゃないし、
そもそもプログラミングをするべきじゃない。
0510デフォルトの名無しさん2008/02/13(水) 10:24:35
同意
0511デフォルトの名無しさん2008/02/13(水) 10:25:49
>>509
なに俺様は完璧とか言ってんの?
■ このスレッドは過去ログ倉庫に格納されています