Czytałem Refaktoryzację Martina Fowlera . Ogólnie jest znakomity, ale jedna z rekomendacji Fowlera wydaje się sprawiać trochę kłopotów.
Fowler zaleca zastąpienie zmiennych tymczasowych zapytaniem, więc zamiast tego:
double getPrice() {
final int basePrice = _quantity * _itemPrice;
final double discountFactor;
if (basePrice > 1000) discountFactor = 0.95;
else discountFactor = 0.98;
return basePrice * discountFactor;
}
wybierasz metodę pomocnika:
double basePrice() {
return _quantity * _itemPrice;
}
double getPrice() {
final double discountFactor;
if (basePrice() > 1000) discountFactor = 0.95;
else discountFactor = 0.98;
return basePrice() * discountFactor;
}
Ogólnie zgadzam się, z tym wyjątkiem, że jednym z powodów, dla których używam zmiennych tymczasowych jest to, że linia jest zbyt długa. Na przykład:
$host = 'https://api.twilio.com';
$uri = "$host/2010-04-01/Accounts/$accountSid/Usage/Records/AllTime";
$response = Api::makeRequest($uri);
Gdybym spróbował to wpisać, linia byłaby dłuższa niż 80 znaków.
Alternatywnie otrzymuję łańcuchy kodów, które same nie są o wiele łatwiejsze do odczytania:
$params = MustacheOptions::build(self::flattenParams($bagcheck->getParams()));
Jakie są strategie pogodzenia tych dwóch kwestii?
$host
i $uri
przykład jest w pewnym sensie wymyślony - chyba że host był odczytywany z ustawienia lub innych danych wejściowych, wolałbym, aby znajdowały się w tej samej linii, nawet jeśli zawija się lub nie wychodzi.