He estado leyendo Refactorización de Martin Fowler . En general, es excelente, pero una de las recomendaciones de Fowler parece estar causando algunos problemas.
Fowler recomienda que reemplace las variables temporales con una consulta, así que en lugar de esto:
double getPrice() {
final int basePrice = _quantity * _itemPrice;
final double discountFactor;
if (basePrice > 1000) discountFactor = 0.95;
else discountFactor = 0.98;
return basePrice * discountFactor;
}
sacas un 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;
}
En general, estoy de acuerdo, excepto que una razón por la que uso variables temporales es cuando una línea es demasiado larga. Por ejemplo:
$host = 'https://api.twilio.com';
$uri = "$host/2010-04-01/Accounts/$accountSid/Usage/Records/AllTime";
$response = Api::makeRequest($uri);
Si intentara incluir eso, la línea tendría más de 80 caracteres.
Alternativamente, termino con cadenas de código, que en sí mismas no son mucho más fáciles de leer:
$params = MustacheOptions::build(self::flattenParams($bagcheck->getParams()));
¿Cuáles son algunas estrategias para conciliar los dos?
$hosty el $uriejemplo es una especie de urdido, sin embargo - a menos que el anfitrión se están leyendo desde un entorno u otra entrada, preferiría que estar en la misma línea, incluso si lo hace envoltura o ir fuera del borde.
