外部変数に関して

解決


snail  2015-04-11 01:50:04  No: 47202

いまさらですが、Delphiの外部変数について教えて下さい。
XE7 を使って昔作成したプログラムを書き直したり、機能追加
していて気がついたのですが、同じ名前の変数が複数のソース
に存在していてもエラーになりません。
複数のソースに存在した場合、最初のソースで Integer 
別のソースで Currency として定義してもエラーにはなりません。
バグの元になるので、変数定義を一カ所にまとめたいのですが、
変数名一覧みたいなものは作成できないでしょうか。
よろしくお願いします。


通りすがり  2015-04-11 06:26:45  No: 47203

そもそもグローバル変数はなるべく減らしましょう。0にするにはシングルトンとか使うといいです。
ファイルローカル変数もなるべく減らしましょう。これは通常クラス、フォーム、データモジュールのプライベートメンバにすることが可能です。
要するに変数名一覧とかそういうことではなく、根本的に不具合を作り込まない手法を身につけるべきです。
どうしても、ということなら、静的解析ツールみたいなものやDoxygenみたいなツールの活用をお勧めします。


snail  2015-04-13 19:39:15  No: 47204

>そもそもグローバル変数はなるべく減らしましょう。
新しく書くときはなるべく使わないようにしていますが、
元々右も左も解らないときに作り始めたプログラムなので
変数を使いまくっています。1から作り直すとなると
言語を変えると思います。

>0にするにはシングルトンとか使うといいです。
Delphiで「シングルトン」を使う(指定する?)方法はあのますか。

Doxygenネットで調べてみましたが、Delphiには対応していないですね。
対応しているツールを知っていたら教えて下さい。

よろしくお願いします。


通りすがり  2015-04-13 21:58:54  No: 47205

Delphi シングルトン で検索してみる、という発想はありませんか?
Delphi Doxygen で検s(ry

まぁ作り直したほうが早いと思いますよ、はっきりいって。


snail  2015-04-13 22:09:44  No: 47206

>Delphi シングルトン で検索してみる、という発想はありませんか?
単純にシングルトン で検索していました。

馬鹿におつきあいいただき、ありがとうございました。


通りすがり  2015-04-13 23:26:27  No: 47207

おっと、忘れてました。グローバル変数にユニット名を修飾としてつけるようにすれば目的をある程度満たすことができるかもしれません。
Unit1にあるFooという変数であれば、Fooと単に記述するのではなくUnit1.Fooとする、ということです。これで同名であっても区別できます/されます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加