ごくごく初歩的なことを質問します。
Private Sub Command1_Click()
With Text1
.Text = "初歩的"
.Enabled = True
End With
End Sub
とする場合もあれば
Private Sub Command1_Click()
Dim strString As String
With Text1
strString = "初歩的"
.Text = strString
.Enabled = True
End With
End Sub
としているサンプルもあります。長いことVBをやっていますが目からうろこというか思いもしなかったことで、考えています。変数を使うべきときはどんな時が適切なのでしょうか?上記の例ではどちらでもいいと思うのですが、変数を当てるほうがいいのでしょうか?アプリケーションの処理速度に関わってくることで意外とナーバスになっているのかも知れません。
プロパティを複数呼び出すのを嫌って、変数へ格納して使う分には有効ですが・・・
編集 削除> 変数を使うべきときはどんな時が適切なのでしょうか?
自分が必要だと思ったときで良いんじゃないかと思います。
あまりナーバスになってもねェ……。
ちなみに上記の例の場合、私の環境で500万回実行したところ
変数なしでは7.3秒、変数使用では7.9秒くらいの差しか出ませんでした。
処理速度のことを考えるなら↓のサイトの『VBコーディング標準』ってところを一読することをおすすめします。
http://www.gj.il24.net/~nakasima/index.html
私は経験上、なるべく直書きを避けています。
なぜなら今後の修正上で大変になるからです。
変数はなるべくスコープを小さく、無駄に宣言しない方が勿論
メモリの無駄遣いをなくす事になりますが、左程処理速度を気にせず
作れる際は、変数を使用した方がよい場合が(上記サンプルのようなものは)多いのではと思います。
修正が入った時・・直書きより修正が楽(複数あったり探しづらかったり)
他の人が見る時・・例えば1と書くより、blnTrueと書いた方が分かり易い。
↑(プログラミングの基礎で結構重要です。)
等々を踏まえて作る物に見合った使い方が大切だと思います。
さっそくのご回答恐れ入ります。処理速度に関してはページを拝見しまして了解しました。メモリに関してはどうなのでしょうか?
フレキシブルグリッドのTextmatrixプロパティでは直接代入するよりも変数に格納して当てたほうが早いというような記事を見たことがあるのですが。もちろんおういうことって明確に決まったものではないでしょうが。
java.lang.Nullpoさん、nahさん、nanashiさん、ありがとうございます。
もうひとつ疑問なのですが、宣言して、1度使用して、使わなくなった変数を使いまわすことってしてますか?
自分のプログラミングスタイルは、同一名の変数(配列宣言)を使用し、異名の変数を減らすところにあります。おかしい使い方だとは思いますが、半分見易さ、半分見にくさもあります。
この場合というのは1度使って使わなくなった変数のメモリはそのまま残るのでしょうか?
編集 削除> 使わなくなった変数を使いまわすことってしてますか
ループカウンタなどで多く見受けられますが、
同じ変数を使いまわすことは、コンパイラで最適化されなくなる温床になります。
> この場合というのは1度使って使わなくなった変数のメモリはそのまま残るのでしょうか?
スコープの範囲によるでしょう。
それはともかく、体感速度がさほど変わらないのなら、
可読性を重視すべきという意見には賛成です。
> プロパティを複数呼び出すのを嫌って、変数へ格納して使う分には有効ですが・・・
と言ったのは、速度だけを考えた場合の話です。
微妙な速度アップはありますから。
>ループカウンタなどで多く見受けられますが、
>同じ変数を使いまわすことは、コンパイラで最適化されなくなる温床になります。
これは知りませんでした。ありがとうございます。
変数を使用したあとにメモリを開放する、例えば Set objObject = Nothing みたいなものっていうのはあるのでしょうか?strFileName = vbNull とか。
>それはともかく、体感速度がさほど変わらないのなら、
>可読性を重視すべきという意見には賛成です。
はい。この点重視します。
思いついたことを質問するんじゃなくて調べて分からないところを
聞いたほうがいいですよ。
GGさん、恐れ入ります。申し訳ありません。注意します。
編集 削除オブジェクト型と、そうでない型の違いを勉強した方が良いかな。
# VB.NETだったら、すべてオブジェクト型の派生だけど。
はい、皆さんありがとうございます。もう少し勉強してみます。
編集 削除