Una ragione per introdurre una variabile separata è migliorare la leggibilità, supponendo che il vero nome di $someClass->thisVar()
non sia abbastanza espressivo. Questo può avere senso anche se la funzione viene richiamata una sola volta:
function someFunction(SomeClass $someClass) {
$explainingName = $someClass->thisVar();
doSomethingElse($explainingName);
}
Naturalmente, se pensi che il nome della funzione sia abbastanza chiaro, questa variante
function someFunction(SomeClass $someClass) {
doSomethingElse($someClass->selfExplanatoryName());
}
potrebbe andare bene Ma anche in questo caso, quando entrambi i nomi delle funzioni sono molto lunghi,
function someFunction(SomeClass $someClass) {
doSomethingElseWithAVeryLongFunctionName($someClass->selfExplanatoryButVeryLongName());
}
potrebbe essere considerato meno leggibile di
function someFunction(SomeClass $someClass) {
$thisVar = $someClass->selfExplanatoryButVeryLongName();
doSomethingElseWithAVeryLongFunctionName($thisVar);
}
Quando devi riutilizzare il valore almeno due volte come nei tuoi esempi, un motivo potrebbe essere che $someClass->thisVar()
deve essere chiamato una sola volta a causa di effetti collaterali, oppure dovrebbe essere chiamato una sola volta a causa di un impatto notevole sulle prestazioni.
Una terza ragione potrebbe essere quella di evitare la duplicazione del codice. Pensa a questo:
function someFunction(SomeClass $someClass) {
doSomethingElse($someClass->thisVar($parameter1,$parameter2,$parameter3));
echo $someClass->thisVar($parameter1,$parameter2,$parameter3);
}
qui $someClass->thisVar($parameter1,$parameter2,$parameter3)
viene ripetuto due volte, il che viola il principio secco. Il tuo secondo esempio è un caso limite: è anche una violazione del principio DRY, ma non grave, e per evitarlo devi introdurre più codice di quello che effettivamente ti salva. Quindi è un trade-off senza una chiara "migliore" soluzione.