Я читал Рефакторинг Мартина Фаулера . Как правило, это отлично, но одна из рекомендаций Фаулера, кажется, вызывает небольшие проблемы.
Фаулер рекомендует заменить временные переменные запросом, поэтому вместо этого:
double getPrice() {
final int basePrice = _quantity * _itemPrice;
final double discountFactor;
if (basePrice > 1000) discountFactor = 0.95;
else discountFactor = 0.98;
return basePrice * discountFactor;
}
вы вытаскиваете в помощник метод:
double basePrice() {
return _quantity * _itemPrice;
}
double getPrice() {
final double discountFactor;
if (basePrice() > 1000) discountFactor = 0.95;
else discountFactor = 0.98;
return basePrice() * discountFactor;
}
В целом я согласен, за исключением того, что я использую временные переменные, когда строка слишком длинная. Например:
$host = 'https://api.twilio.com';
$uri = "$host/2010-04-01/Accounts/$accountSid/Usage/Records/AllTime";
$response = Api::makeRequest($uri);
Если бы я попытался вставить это, строка была бы длиннее, чем 80 символов.
С другой стороны, я получаю цепочки кода, которые сами по себе не так легко читаются:
$params = MustacheOptions::build(self::flattenParams($bagcheck->getParams()));
Каковы некоторые стратегии для примирения двух?
$host
и $uri
пример немного надуманные - если только хост не читался из настроек или другого ввода, я бы предпочел, чтобы они были на одной строке, даже если они переносятся или выходят за границы.