アカウント名:
パスワード:
連続性が担保されているデータならともかくどう途切れるか不明なデータの連続性で何か判定しようとするのは狂っている
たぶんwhile(処理件数 > 0) { 処理件数 = 送金処理(リスト#next1000件);}みたいなループなんだと思う。このループ処理の実装者と送金処理の実装者が違うなら、まぁ分からなくもないかなぁ。狂ってるというか、仕様をちゃんとチェックせずに実装しちゃった系のよくある普通のバグでしょ。
おそらく、逐次のチェック処理だと、DBとか使わずにファイルから読み込んでるんだと思う。そしてデータの最後を表す番兵レコードがいるんじゃないかな。
そうすると、1000件単位に区切って処理しようとした場合に、全数が1001件だったりすると2単位目は対象が番兵レコード1件だけとなって、つまり処理件数0件だからループ終了みたいなへんてこ仕様なんだと思う。
で、テストでもその条件でループ終了することを確認してOK、みたいな。そうだとしたら設計が良くないし、ついでに設計者同士の連携も良くないんでしょう。
番兵レコードの存在を知らなかったんじゃないかな。きっと、EOFを過ぎてファイルからバッファに1000件分読み込んで処理を行うと処理件数が0に(偶然に)なることを利用して、EOFを過ぎたことを検出して終了するようなプログラムを書いていたのではないかと思った。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
最初のバージョンは常に打ち捨てられる。
話にならない (スコア:0)
連続性が担保されているデータならともかく
どう途切れるか不明なデータの連続性で何か判定しようとするのは狂っている
Re: (スコア:3)
たぶん
while(処理件数 > 0) {
処理件数 = 送金処理(リスト#next1000件);
}
みたいなループなんだと思う。
このループ処理の実装者と送金処理の実装者が違うなら、まぁ分からなくもないかなぁ。
狂ってるというか、仕様をちゃんとチェックせずに実装しちゃった系のよくある普通のバグでしょ。
Re: (スコア:1)
おそらく、逐次のチェック処理だと、DBとか使わずにファイルから読み込んでるんだと思う。
そしてデータの最後を表す番兵レコードがいるんじゃないかな。
そうすると、1000件単位に区切って処理しようとした場合に、全数が1001件だったりすると
2単位目は対象が番兵レコード1件だけとなって、つまり処理件数0件だからループ終了
みたいなへんてこ仕様なんだと思う。
で、テストでもその条件でループ終了することを確認してOK、みたいな。
そうだとしたら設計が良くないし、ついでに設計者同士の連携も良くないんでしょう。
Re:話にならない (スコア:0)
番兵レコードの存在を知らなかったんじゃないかな。きっと、EOFを過ぎてファイルからバッファに1000件分読み込んで処理を行うと処理件数が0に(偶然に)なることを利用して、EOFを過ぎたことを検出して終了するようなプログラムを書いていたのではないかと思った。