Sou psicólogo com formação clássica, não sou programador, portanto, às vezes, os aspectos mais avançados da programação me escapam, especialmente em relação à eficiência do programa e / ou a certas práticas recomendadas, neste caso no que diz respeito ao uso de variáveis.
Aqui está algum pseudo-código:
var a;
var b;
var c;
function GetSomeInformation() {
returns "XYZ";
}
a = GetSomeInformation();
b = GetSomeInformation();
c = GetSomeInformation();
Portanto, minha pergunta é:
É mais ou menos eficiente (ou o mesmo) armazenar dados em uma variável uma vez e referenciar isso em oposição a chamadas repetidas para a mesma função?
IE, esse código é mais eficiente?
var results = GetSomeInformation();
a = results;
b = results;
c = results;
Em caso afirmativo, esse ganho ou perda de eficiência geralmente é o mesmo entre os idiomas ou varia de acordo com o idioma? Existem limites nos quais se torna melhor nomear uma variável em vez de usar uma chamada de função repetida ou vice-versa? Que aspectos podem mudar sua eficiência (por exemplo, existe uma diferença se é uma função de membro de uma classe versus uma função regular no escopo global)? etc.
Se possível, gostaria de saber especificamente como essa noção se aplica às caixas de diálogo C ++ / MFC, como surgiu quando eu estava escrevendo algum código nessa estrutura.
// 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
) for pura e o compilador estiver ciente desse fato. Caso contrário, o compilador precisará chamá-lo três vezes para garantir que os efeitos colaterais ocorram conforme o esperado.