ฉันได้อ่านRefactoringของ Martin 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);
ถ้าฉันลอง inline มันเส้นจะยาวกว่า 80 ตัวอักษร
อีกทางหนึ่งฉันจบด้วย chain of code ซึ่งตัวมันเองไม่ได้อ่านง่ายกว่านี้มาก:
$params = MustacheOptions::build(self::flattenParams($bagcheck->getParams()));
มีกลยุทธ์อะไรบ้างในการปรับยอดทั้งสอง
$host
และคุณ$uri
เป็นประเภทที่มีการวางแผนแม้ว่า - โฮสต์จะถูกอ่านจากการตั้งค่าหรืออินพุตอื่น ๆ ฉันต้องการให้พวกเขาอยู่ในบรรทัดเดียวกันแม้ว่ามันจะพันหรือหลุดจากขอบ