忘れないようにメモ。
jquery.tablefix.js は、Excel のウィンドウ枠固定のように、
テーブルのヘッダや左側を固定して、残りの部分をスクロールさせるための、jQuery プラグイン
「@id」のつけ忘れに注意
こんばんは。
最近はplayframeworkで開発中。
「@id」のつけ忘れで少しはまった。
DB更新しようとすると、
「主キーとレコードの整合性がとれない」と怒られる。
原因を探ってみると、
modelの主キーに「@id」をつけ忘れていた。
今度から無駄にはまらないように注意しなければ (・ω・ ;)
ちなみに・・・
原因はDBの構成変わったときに修正をしていなかったからだった。
「問い合わせによる一時変数の置き換え」
式をメソッドに抽出することで、
一時変数へのすべての参照を新たなメソッドに置き換える。
また、新たなメソッドが他のメソッドでも使えるようになる。
修正前。
double basePrice = _quantity * _itemPrice; if ( basePrice > 1000 ) return basePrice * 0.95; else return basePrice * 0.98;
修正後。
if ( basePrice() > 1000 ) return basePrice() * 0.95; else return basePrice() * 0.98; double basePrice() { return _quantity * _itemPrice; }
「ネストを浅くする」
ネストを浅くするとコードが読みやすくなる。
修正前。
for (int i = 0 ; i < 10; i++) { if (i % 2 == 0) { if (i == 2) { System.out.println(i); } } }
修正後。
for (int i = 0 ; i < 10; i++) { if (i % 2 != 0) { continue; } if (i != 2) { continue; } System.out.println(i); }
例が良くないので恩恵を感じにくいが、
ネストをなくしたことによってわかりやすくなった。
ループとif文を重ねて書くケースがあると思うが、
ネストの深さを意識して書きたいところである。
「一時変数のインライン化」
簡単な式によって一度だけ代入される一時変数があり、
それが他のリファクタリングの障害になっている場合、
その一時変数への参照をすべて式で置き換える。
修正前。
double basePrice = anOrder.basePrice(); return ( basePrice > 1000 );
修正後。
return ( anOrder.basePrice() > 1000 );
「メソッドのインライン化」
メソッドの本体が、名前をつけて呼ぶまでもなく明らかである場合、
呼び出し元にインライン化して、メソッドを除去する。
修正前。
int get Rating() { return ( moreThanFiveLateDeliveries() ) ? 2 : 1; } boolean moreTanFiveLateDeliveries() { return _numberOfLateDeliveries > 5; }
修正後。
int get Rating() { return ( _numberOfLateDeliveries > 5 ) ? 2 : 1; }
コードをきれいに書く方法をまとめることにした。
書籍を参考にするため、
サンプルコードのまま書くことが多いと思うが、
気にしないで書いていく。
「メソッド抽出」
修正前。
void printReport(String title) { //ヘッダ System.out.println(title); System.out.println("名前"); printDetail(); }
タイトルと名前をひとまとめにすることによって、
わかりやすくできる。
修正後。
void printReport() {
printHeader(title);
printDetail();
}
コメントなしでもわかりやすい。
ただ、適切なメソッド名にしないと、
逆にわかりづらくなってしまう。
あまりに感動したので、メモ。
Eclipseでsysoを入力後、
補完機能を使うとSystem.out.println()が出せる。
参照
watawata日記 Eclipseショートカットキーまとめ より
http://d.hatena.ne.jp/wyukawa/20090628/1246183795
ツールを使いこなすと開発スピードも上がる。
Eclipse使っている人は一度確認しておこう。
(そう言っている自分は確認じゃなくて勉強だがw)
ちなみに、
NetBeansではsoutで出せるらしい。