我一直在阅读Martin Fowler的Refactoring。它通常很棒,但是Fowler的建议之一似乎引起了一些麻烦。
Fowler建议您使用查询替换临时变量,因此,不要这样做:
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
例子是那种做作,但-除非主机正在从环境或其他输入读了,我宁愿他们是在同一行,即使它包装或熄灭的边缘。