Ich bin ein klassisch ausgebildeter Psychologe und kein Programmierer. Manchmal entgehen mir die fortgeschritteneren Aspekte der Programmierung, insbesondere in Bezug auf die Programmeffizienz und / oder bestimmte Best Practices, in diesem Fall in Bezug auf die Verwendung von Variablen.
Hier ist ein Pseudocode:
var a;
var b;
var c;
function GetSomeInformation() {
returns "XYZ";
}
a = GetSomeInformation();
b = GetSomeInformation();
c = GetSomeInformation();
Meine Frage lautet also:
Ist es mehr oder weniger effizient (oder gleich), Daten einmal in einer Variablen zu speichern und darauf zu verweisen, im Gegensatz zu wiederholten Aufrufen derselben Funktion?
IE, ist dieser Code effizienter?
var results = GetSomeInformation();
a = results;
b = results;
c = results;
Wenn ja, ist dieser Effizienzgewinn oder -verlust im Allgemeinen sprachübergreifend gleich oder variiert er je nach Sprache? Gibt es Schwellenwerte, bei denen es besser wird, eine Variable zu benennen, als einen wiederholten Funktionsaufruf zu verwenden oder umgekehrt? Welche Aspekte können die Effizienz verändern (z. B. gibt es einen Unterschied, ob es sich um eine Mitgliedsfunktion einer Klasse handelt oder um eine reguläre Funktion im globalen Bereich)? usw.
Wenn möglich, möchte ich speziell wissen, wie ein solcher Begriff für C ++ / MFC-Dialoge gilt, wie er beim Schreiben von Code in diesem Framework entstanden ist.
// 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
) rein ist und der Compiler sich dieser Tatsache bewusst ist. Andernfalls muss der Compiler es dreimal aufrufen, um sicherzustellen, dass die Nebenwirkungen wie erwartet auftreten.