Estive lendo a refatoração de Martin Fowler . Geralmente é excelente, mas uma das recomendações de Fowler parece estar causando um pequeno problema.
Fowler recomenda que você substitua variáveis temporárias por uma consulta, portanto, em vez disso:
double getPrice() {
final int basePrice = _quantity * _itemPrice;
final double discountFactor;
if (basePrice > 1000) discountFactor = 0.95;
else discountFactor = 0.98;
return basePrice * discountFactor;
}
você usa um método auxiliar:
double basePrice() {
return _quantity * _itemPrice;
}
double getPrice() {
final double discountFactor;
if (basePrice() > 1000) discountFactor = 0.95;
else discountFactor = 0.98;
return basePrice() * discountFactor;
}
Em geral, concordo, exceto que uma das razões pelas quais uso variáveis temporárias é quando uma linha é muito longa. Por exemplo:
$host = 'https://api.twilio.com';
$uri = "$host/2010-04-01/Accounts/$accountSid/Usage/Records/AllTime";
$response = Api::makeRequest($uri);
Se eu tentasse enfatizar isso, a linha ultrapassaria 80 caracteres.
Como alternativa, acabo com cadeias de código, que não são muito mais fáceis de ler:
$params = MustacheOptions::build(self::flattenParams($bagcheck->getParams()));
Quais são algumas estratégias para reconciliar as duas?
$host
e $uri
é artificial - a menos que o host esteja sendo lido de uma configuração ou outra entrada, eu preferiria que eles estivessem na mesma linha, mesmo que isso ocorra ou se perca.