railsについて、先輩にもらったアドバイスまとめ(その1)
最近はRuby on Railsで社内システムを作っています。 その中で先輩からもらったアドバイスやレビューで受けた指摘をまとめます。
new()はいらない
hoge = Hoge.new()
は
hoge = Hoge.new
でよい。
(Rubyは短く楽に書けるときは楽をするのじゃ!)
is_available?のisはいらない
有効かを判定しtrue/falseを返却するようなメソッドの名前は
def is_available? # 何らかの処理 end
ではなく
def available? # 何らかの処理 end
でよい。
(present?やblank?というメソッドがありますよねー)
※私はこの「?」を疑問形の「?」だと思っていました…(Is this a pen?的な)
破壊的でないメソッドに「!」はいらない
def hoge! # 破壊的な処理 end
であり、破壊的でないメソッドに「!」はいらない。
(破壊的な処理を行う場合はprivateメソッドであっても「!」をつけるようにしています)
ある機能追加のために複数のテーブルにカラム追加を行う場合、migrateファイルは分ける
分けたのですが理由が思い出せず…。
※これはもしかしたら1つの機能追加で複数のテーブルに手が入ったことをわかりやすくするために、migrateファイルはわけないほうがよかったのかも?と思いました。
できるだけ短く、意味のある処理ごとにメソッドにする
def calc_hoge hoge = 0 hoge = hoge + (a * b) hoge = hoge + (c * d) end
は
def calc_hoge hoge = 0 hoge += calc_a_b hoge += calc_c_d end def calc_a_b a * b end def calc_c_d c * d end
のようにしたほうがコードが説明的になってわかりやすい。
2016/4/19(火)追記
ステータスコード404でリソースの存在を隠すこともできる
現在作成しているシステムはユーザーにロールを設定しており、ロールによっては閲覧できないリソースがある。
そのリソースを表示するようなページに権限のないユーザーがアクセスした場合、
403が返るとリソースが存在していることが権限のないユーザーにも分かってしまう。
存在自体を隠したいときは404を返す。
詳しくは下記の記事を参照
HTTPステータスコードを適切に選ぶためのフローチャート : 難しく考えるのをやめよう | インフラ・ミドルウェア | POSTD
railsで404のときに表示されるページは public/404.html
である。
任意のデザインにしたい場合は404.htmlを編集すればよい。