Jan 07 2011
∞
“
■ コントローラ
- 行数よりもインデントの深さに気をつける
- if-then-elseをネストしたくなったらロジックが間違っている
- アクションでないメソッドはprotected/privateにする
- 行数を減らす目的でbeforeフィルタを書かない
- グローバル変数、インスタンス変数にアクセスするポイントを集中させる
- グローバル変数(paramsとか)に代入しない
- ダイナミックファイダを使えないfindをみつけたらモデルのメソッド/named_scopeにする
■ ビュー
- eachとif以外のロジックを書かない
- 複雑になるところはヘルパにまとめる
- 分からないことはモデルに聞く
- 分割するためだけにパーシャルしない
- 代入とか副作用の起こることをしない
- eachの中でSQLが走らないかチェックする
■ モデル
- DBのテーブルを持たないクラスはAR::Baseを継承しない(笑
- テーブルを持たないクラスのうち、多態を使う一連のグループはサブディレクトリを作ってモジュールにまとめる
- モジュールとディレクトリ名の命名規約はRailsに合わせる
- モデルが大きくなってきたら機能群をモジュールに切り出してincludeする
- 共有しないモジュールはクラス名::モジュール名にしてクラスと同じ名前のディレクトリに入れる
- モジュール名は-ableを気取ってみる
- モジュールに切り出すときはクラス内にモジュールを作ってテストが通るように
- 定数はselectable_attrを使う
- 理由を説明できないfind_by_sqlは使わない
- conditionsをnamed_scopeにできないか検討する
■ その他一般論
- 引数に代入とかしない
- あるメソッドの中で同じオブジェクトへのメソッド呼び出しが多い場合、メソッド自体を相手に移すことを検討する