Ho letto il refactoring di Martin Fowler . È generalmente eccellente, ma una delle raccomandazioni di Fowler sembra causare qualche problema.
Fowler consiglia 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;
}
si estrae in 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 per il fatto che uso una variabile temporanea quando una linea è troppo lunga. Per esempio:
$host = 'https://api.twilio.com';
$uri = "$host/2010-04-01/Accounts/$accountSid/Usage/Records/AllTime";
$response = Api::makeRequest($uri);
Se avessi provato a spiegarlo, la riga avrebbe superato gli 80 caratteri.
In alternativa, finisco con 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 i due?
$host
e $uri
ad esempio è una specie di forzato, anche se - a meno che il padrone di casa era in corso la lettura un'impostazione o altro ingresso, preferisco loro di essere sulla stessa linea, anche se lo fa avvolgere o andare fuori dal bordo.