J'ai lu le refactoring de Martin Fowler . Il est généralement excellent, mais l'une des recommandations de Fowler semble causer un petit problème.
Fowler vous recommande de remplacer les variables temporaires par une requête, donc au lieu de cela:
double getPrice() {
final int basePrice = _quantity * _itemPrice;
final double discountFactor;
if (basePrice > 1000) discountFactor = 0.95;
else discountFactor = 0.98;
return basePrice * discountFactor;
}
vous sortez dans une méthode d'aide:
double basePrice() {
return _quantity * _itemPrice;
}
double getPrice() {
final double discountFactor;
if (basePrice() > 1000) discountFactor = 0.95;
else discountFactor = 0.98;
return basePrice() * discountFactor;
}
En général, je suis d'accord, sauf qu'une des raisons pour lesquelles j'utilise des variables temporaires est lorsqu'une ligne est trop longue. Par exemple:
$host = 'https://api.twilio.com';
$uri = "$host/2010-04-01/Accounts/$accountSid/Usage/Records/AllTime";
$response = Api::makeRequest($uri);
Si j'essayais d'inclure cela, la ligne dépasserait 80 caractères.
Alternativement, je me retrouve avec des chaînes de code, elles-mêmes pas beaucoup plus faciles à lire:
$params = MustacheOptions::build(self::flattenParams($bagcheck->getParams()));
Quelles sont les stratégies pour concilier les deux?
$host
et $uri
exemple est un peu artificiel, cependant - à moins que l'hôte ne soit lu à partir d'un paramètre ou d'une autre entrée, je préférerais qu'ils soient sur la même ligne, même s'il s'habille ou sort du bord.