喫茶XRAYトップページ

[▲前のスレッド]

[8798] シンプルなテストプログラムを作成する意義返信 削除
2015/5/6 (水) 18:23:47 Mr.XRAY
[Win8/2012Serverでプロセスがデッドロックしないようにするには?]
http://hpcgi3.nifty.com/e-papy/DelphiBBS/wwwlng.cgi?print+201504/15040013.txt

>簡単なテストプログラムを作成・テストしたところ

そうなんですよ,
そういうことが結局は「いそがばまわれ」なんだと思います.
問題の切り分けができるんですね.
まっ,でも
「複雑に絡みあっているので,そういうことはできません」
「何万行ものプログラムなので,そういうことはできません」
という方もいるようですけど.


[8801] Re:シンプルなテストプログラムを作成する意義返信 削除
2015/5/6 (水) 18:51:18 たてぐや
▼ Mr.XRAYさん

> 問題の切り分けができるんですね.

 すくなくともそのルーティンの動作保証が得られないとね。どこで問題が起
こっているか切り分けができませんよね。

> 「複雑に絡みあっているので,そういうことはできません」

 いわゆるスパゲッティ状態ですか。そんなプログラムが期待通りに動作する
とは思えませんが。

> 「何万行ものプログラムなので,そういうことはできません」

 何万行あろうと全部ひと続きじゃありません、というかそういうプログラム
の作り方に問題がありますね。一つの手続き・関数の動作保証ができないよう
なプログラムはまともに動いた試しがありません。
 って、偉そうなことを言ってますが…


[8802] Re2:シンプルなテストプログラムを作成する意義返信 削除
2015/5/6 (水) 18:54:07 Mr.XRAY
▼ たてぐやさん

>  って、偉そうなことを言ってますが…

お互い様です (^^;
だからこそ,ここにこういうこと書いて,お互い気を付けましょう.
ということなんです.


[8806] with文とシンプルなテストプログラム返信 削除
2015/5/7 (木) 15:10:36 Mr.XRAY
シンプルなテストプログラムの作成と直接は関係ないかもしれませんが,

[自動生成していないFormからの参照のエラーを回避するには?]
http://hpcgi3.nifty.com/e-papy/DelphiBBS/wwwlng.cgi?print+201505/15050004.txt

ちょっとチェックしようと思って,以下で,つまづいてしまいました.

procedure TForm2.ButtonListDispClick(Sender: TObject);
var
  i   : integer;
  item  : TListboxItem;
begin
  with Form3 do begin
      //リストをクリア
      SelectList.Clear;    //ここでエラーになる
      SelectList.BeginUpdate;
   〜したい処理 省略〜

  end;  //with
end;

まず,with 文です.多分 Form3.SelectList だと思うのですが,
そうでなく,TForm3 以外のメンバを書く人もいます.
その下に 〜したい処理 省略〜 というのがあります.
シンプルなテストというのは,あくまでもシンプルにし方がいいのです.
省略はいけません.その省略したところが問題だった.
というのは,最近もありまました.これでは問題の切り分けには不十分です.
その 〜したい処理 省略〜 の中には,with にかかっているのと
そうでないのがごちゃまぜになっている可能性もあります.

with 文も,確実にそれとわかるものだけにしないと,結構悩みの元になります.
with 文内のプロパティ,メソッド,オブジェクトが全て,with 文の元の
オブジェクトにかかっている場合,あるいは,確実に係ることはないと,
明確にわかる場合に限って with 文内に書かないと,
とんでもないことになることがあります.

自分で分かっている場合はいいのですが,
他の人に教えてもらうという場合は,改めてシンプルなコードを作成した方が
いいのではないかと思います.
省略はダメです.コピペして動作するものが必要です.
特に私の場合,頭が悪いので,具体的でないとダメですね.

というわけで,チェックは中止しました.


参考
http://www.gesource.jp/weblog/?p=6025
(with文は使わない というのがあります)



[8807] Re:with文のネスト返信 削除
2015/5/7 (木) 15:19:18 Mr.XRAY
ネットで入手したコードには With 文のネストしたのもあります.
そうなると,バカな私には全くお手上げになります.
また,こんなのもあります.これもお手上げです.

  with AAA, BBB do begin
    ....
    ....
  end;


[8809] Re:シンプルなテストプログラムを作成する意義返信 削除
2015/5/7 (木) 22:26:55 igy
▼ Mr.XRAYさん
> [Win8/2012Serverでプロセスがデッドロックしないようにするには?]
> http://hpcgi3.nifty.com/e-papy/DelphiBBS/wwwlng.cgi?print+201504/15040013.txt
>
> >簡単なテストプログラムを作成・テストしたところ
>
> そうなんですよ,
> そういうことが結局は「いそがばまわれ」なんだと思います.
> 問題の切り分けができるんですね.



現象が再現できるコードを挙げるって、大切ですよね。

自動生成していないFormからの参照のエラーを回避するには?
http://hpcgi3.nifty.com/e-papy/DelphiBBS/wwwlng.cgi?print+201505/15050004.txt

では、最初に挙げたコードでは、原因となる部分が含まれなかったため、テストプログラムを作っても再現できませんでしたが、
次に挙げたコードと再現手順があると、すぐ tor さんが指摘して、原因が特定されましたしね。


[8811] Re2:シンプルなテストプログラムを作成する意義返信 削除
2015/5/7 (木) 23:06:33 Mr.XRAY
▼ igyさん

シンプルな,現象を再現するための最小のコードのプロジェクトを
作成するというのは大事なんですが,結構面倒なことは面倒ですよね.
だから,質問する方は省略してしまうんだと思います.
それで,タイプミスなんてのも発生します.

私も業務アプリ開発の時にやるんですが,
そんなプロジェクトのフォルダがいっぱいできて,何が何だか,
何のテストのために作ったのか,訳がわからなくなることもよくありました.

ハッキリ言うと,おバカなんですけどね.ハハハッ
それらの一部がサンプルプログラム集として掲載されているわけです.


[8812] Re:シンプルなテストプログラムを作成する意義返信 削除
2015/5/8 (金) 00:13:46 おかぽん
▼ Mr.XRAYさん
> まっ,でも
> 「複雑に絡みあっているので,そういうことはできません」
> 「何万行ものプログラムなので,そういうことはできません」
> という方もいるようですけど.

いや〜、他人(または数年前の自分)が作った、プログラムだと、
切り分けのしようがない、ひどいソースだったり(苦笑

ここがおかしいはずなのに・・・と、かなり小さくしたプログラムでは
再現できなくて悩んでいたら、まったく別のトコに問題があったりね。

バグの潜んでいると思われる場所を、見つけ出す(絞り込む)のも才能なのかなと
思ってしまう今日この頃。

[8815] Re2:シンプルなテストプログラムを作成する意義返信 削除
2015/5/8 (金) 17:57:41 Mr.XRAY
▼ おかぽんさん

> ここがおかしいはずなのに・・・と、かなり小さくしたプログラムでは
> 再現できなくて悩んでいたら、まったく別のトコに問題があったりね。


ある,ある ! ありますよー.
 
> バグの潜んでいると思われる場所を、見つけ出す(絞り込む)のも才能なのかなと
> 思ってしまう今日この頃。


コメントを差支えさせて頂きます (^^;


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82