私は古典的な訓練を受けた心理学者であり、プログラマーではないため、特にプログラムの効率性や特定のベストプラクティスに関して、この場合は変数の使用に関して、プログラミングのより高度な側面が私から逃れることがあります。
ここにいくつかの擬似コードがあります:
var a;
var b;
var c;
function GetSomeInformation() {
returns "XYZ";
}
a = GetSomeInformation();
b = GetSomeInformation();
c = GetSomeInformation();
だから私の質問は:
データを一度変数に格納して同じ関数を繰り返し呼び出すのではなくそれを参照することは多かれ少なかれ効率的(または同じ)ですか?
IE、このコードはより効率的ですか?
var results = GetSomeInformation();
a = results;
b = results;
c = results;
もしそうなら、この効率の向上または低下は一般的に言語間で同じですか、それとも言語によって異なりますか?あるしきい値それはその逆繰り返し関数呼び出しまたはバイスを使用するのではなく、変数に名前を付けるために良くなるどこ?どのような側面で効率が変わる可能性がありますか(たとえば、それがクラスのメンバー関数であるか、グローバルスコープの通常の関数であるかどうかに違いはありますか?)等
可能であれば、そのような概念がC ++ / MFCダイアログにどのように適用されるかを具体的に知りたいと思います。それは、そのフレームワークでコードを書いていたときに生じたものです。
// define pointers to the items in my form
CListBox *pLISTBOX = (CListBox*) GetDlgItem(LISTBOX);
CStatic *pSTATIC_A = (CStatic*) GetDlgItem(STATIC_A);
CStatic *pSTATIC_B = (CStatic*) GetDlgItem(STATIC_B);
CEdit *pEDIT_BOX_A = (CEdit*) GetDlgItem(EDIT_BOX_A);
CEdit *pEDIT_BOX_B = (CEdit*) GetDlgItem(EDIT_BOX_B);
int SelectedIndex = pLISTBOX->GetCurSel();
pSTATIC_A->SetWindowText(pLISTBOX->GetItemData(SelectedIndex));
pSTATIC_B->SetWindowText(pLISTBOX->GetItemData(SelectedIndex));
pEDIT_BOX_A->SetWindowText(pLISTBOX->GetItemData(SelectedIndex));
pEDIT_BOX_B->SetWindowText(pLISTBOX->GetItemData(SelectedIndex));
GetSomeInformation
)が純粋で、コンパイラがこの事実を認識している場合にのみ、CSEが元の例で機能することを追加する場合があります。それ以外の場合、コンパイラーはそれを3回呼び出して、予期したとおりに副作用が発生することを確認する必要があります。