Ho letto Refactoring di Martin Fowler . È generalmente eccellente, ma una delle raccomandazioni di Fowler sembra causare un piccolo problema.
Fowler raccomanda di sostituire le variabili temporanee con una query, quindi invece di questo:
double getPrice() {
final int basePrice = _quantity * _itemPrice;
final double discountFactor;
if (basePrice > 1000) discountFactor = 0.95;
else discountFactor = 0.98;
return basePrice * discountFactor;
}
estrai un metodo di supporto:
double basePrice() {
return _quantity * _itemPrice;
}
double getPrice() {
final double discountFactor;
if (basePrice() > 1000) discountFactor = 0.95;
else discountFactor = 0.98;
return basePrice() * discountFactor;
}
In generale sono d'accordo tranne che una delle ragioni per cui uso variabili temporanee è quando una linea è troppo lunga. Ad esempio:
$host = 'https://api.twilio.com';
$uri = "$host/2010-04-01/Accounts/$accountSid/Usage/Records/AllTime";
$response = Api::makeRequest($uri);
Se provassi a inserirli, la linea andrebbe più lunga di 80 caratteri.
In alternativa, finisco con le catene di codice, che a loro volta non sono molto più facili da leggere:
$params = MustacheOptions::build(self::flattenParams($bagcheck->getParams()));
Quali sono alcune strategie per riconciliare le due?