Soy un psicólogo con formación clásica, no un programador, por lo que a veces los aspectos más avanzados de la programación se me escapan, en particular con respecto a la eficiencia del programa y / o ciertas mejores prácticas, en este caso con respecto al uso de variables.
Aquí hay un pseudocódigo:
var a;
var b;
var c;
function GetSomeInformation() {
returns "XYZ";
}
a = GetSomeInformation();
b = GetSomeInformation();
c = GetSomeInformation();
Entonces mi pregunta es:
¿es más o menos eficiente (o lo mismo) almacenar datos en una variable una vez y hacer referencia a eso en lugar de llamadas repetidas a la misma función?
IE, ¿es este código más eficiente?
var results = GetSomeInformation();
a = results;
b = results;
c = results;
Si es así, ¿esta ganancia o pérdida de eficiencia es generalmente la misma en todos los idiomas, o varía según el idioma? ¿Hay umbrales en los que es mejor nombrar una variable en lugar de usar una llamada de función repetida o viceversa? ¿Qué aspectos podrían cambiar su eficiencia (p. Ej., ¿Hay alguna diferencia si es una función miembro de una clase o una función regular en el ámbito global)? etc.
Si es posible, me gustaría saber específicamente cómo se aplica dicha noción a los diálogos de C ++ / MFC, ya que surgió cuando estaba escribiendo algún código en ese marco.
// 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) es pura y el compilador es consciente de este hecho. De lo contrario, el compilador tiene que llamarlo tres veces para asegurarse de que los efectos secundarios ocurran como se esperaba.