こんにちは、SHIMADAです。

最近、オライリー社の新刊「プログラマが知るべき97のこと」がTwitterで話題に上っているようですね。

ここでは、Railsプログラマが知るべきことを挙げてみました。

残念ながら97も思いつかなかったので、25個です。看板に偽りありですね。ごめんなさい!

コントローラ

  • 行数よりもインデントの深さに気をつける
  • 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にできないか検討する

その他一般論

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

さいごに

いかがでしょうか。

皆さんもそれぞれ「自分はこうすべきだと思う」「これは知っておくべき」という経験則を持っているかと思います。

こういうものを集めて洗練していくと「ベストプラクティス」と呼ばれるものができあがります。

また、これらを体系的に

  • 名前
  • 背景となる状況
  • 課題点
  • 解決策

としてまとめていくと、パタンランゲージができあがります。

みんなで知恵を出しあって、いきいきとしたシステム開発を進めて行きましょう。

……おっと、さっそくCuriさんからビューについてひとことあるようです。

  • 「SEOやEFOのことは頭に入れておけ」

「エントリーフォーム最適化」なんて言葉があるんですね。勉強になりました!

ブックマークに追加する

.
web開発ならKBMJ
Rubyでのwebシステム開発は
実績豊富なKBMJにお任せ下さい
iPhone開発
iPhone開発は
KBMJにお任せ下さい
ブラウザゲーム エインヘリアル
ブラウザゲーム「エインへリアル」
サービス中
オープンソースECパッケージ エレコマ
オープンソースECパッケージ
「エレコマ」
Google Analytics徹底活用スクール
レベルに合わせた
実用的な活用スキルを徹底指導。
好評定期開催中です!

プロフィール

SHIMADA
SHIMADA
プログラミングの上で役立つちょっとした知識などをご紹介します。

最近チェックした記事

最新記事

アーカイブ

アクセスランキング

KBMJのWebソリューション
Ruby on railsの開発ならKBMJ
株式会社ケイビーエムジェイ