मैं मार्टिन फाउलर की रिफैक्टरिंग पढ़ रहा हूं । यह आम तौर पर उत्कृष्ट है लेकिन फाउलर की सिफारिशों में से एक को थोड़ा परेशानी का कारण लगता है।
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
उदाहरण एक तरह से विरोधाभास है, हालांकि - जब तक कि मेजबान को एक सेटिंग या अन्य इनपुट से पढ़ा नहीं जा रहा था, मैं उन्हें एक ही लाइन पर रहना पसंद करूंगा, भले ही वह लपेटे या किनारे से न जाए।