メモ帳

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にできないか検討する

その他一般論

  • 引数に代入とかしない
  • あるメソッドの中で同じオブジェクトへのメソッド呼び出しが多い場合、メソッド自体を相手に移すことを検討する

Page 1 of 1