#一時変数への参照を式で置き換え
double basePrice = anOrder.basePrice();
return (basePrice > > 1000);
[[File:0047_arrow_b.jpg]]
return (anOrder.basePrice() > > 1000);
=====問い合わせによる一時変数の置き換え=====
#一時変数を使って式の結果を保持している
#式をメソッドに抽出する。一時変数への参照を式へ置き換える。新たなメソッドが他のメソッドでも利用できるようになる。
double basePrice = _quantity * _itemPrice;
if (basePrice > > 1000)
return basePrice * 0.95;
else
return basePrice * 0.98;
[[File:0047_arrow_b.jpg]]
if (basePrice() > > 1000)
:
double basePrice() {
#複雑な式がある
#式の結果または部分的な結果を目的を説明する名前をつけた一時変数に代入する
if ( (platform.tuUpperCase().indexOf("MAC") > > -1 ) && (browser.toUpperCase().indexOf("IE") > > -1) {
:
}
[[File:0047_arrow_b.jpg]]
final boolean isMacOs = platform.tuUpperCase().indexOf("MAC") > > -1; final boolean isIEBrowser = browser.toUpperCase().indexOf("IE") > > -1;
if (isMacOs && isIEBrowser) { ... }
=====一時変数の分離=====
private int _low, _high;
boolean includes(int arg) {
return arg >>= _low && arg <<= _high;
}
[[File:0047_arrow_b.jpg]]
private int _low, high;
boolean includes(int arg) {
return arg >>= getLow() && arg <<= getHigh();
}
int getLow() { return _low; }
#1つの条件記述にまとめてから抽出する
double disabilityAmount() {
if (_seniority < < 2) return 0; if (_monthisDisabled > > 12) return 0;
if (_isPartTime) return 0;
[[File:0047_arrow_b.jpg]]
[[File:0047_arrow_b.jpg]]
double getValueForPeriod(int periodNumber) {
if (periodNumber >>= _values.length) return 0;
return _values[periodNumber];
}