規約に限らず自分でコーディングする際に気を付けていることです.
事前準備: チュートリアル
ブランチ管理
- Github flowに従います
コーディング規約
- 基本的にCookpadのRuby コーディング規準に準拠します
- ただしHashの空白囲みはしません
- 不要な
self
は記述しません - 不要な
return
は記述しません - 不要なバックスラッシュは記述しません
- ファイルの末尾は改行1個で終わらせます
- 委譲の際は
Forwardable
を利用します - 変数名、メソッド名ではどのような場合でも省略形を使いません
- 一般的な法則に準拠します
- SOLID
- SRP: Single Responsibility Principal
- OCP: Open Closed Principal
- LSP: Liskov Substitution Principle
- ISP : Interface Segregation Principle
- DIP : Dependency Inversion Principle
- デメテルの法則(最小知識の法則)
- 驚き最小の原則
- ボーイスカウトの規則
- YAGNI: You ain't gonna need it
- DRY: Don't Repeat Yourself
- KISS: Keep it simple, stupid
- SOLID
RSpec
- Better Specs に従います
- Shared Contextをうまく利用します
- Ajaxのテストではコントローラテストでxhrメソッドを利用します
- FactoryGirlではDB saveが不要な場合はbuildを使います
- shoulda-matchersを積極的に利用します
- Cucumberは記述コストが高いので使いません. 代わりにカスタムマッチャをうまく利用します. http://railstutorial.jp/chapters/sign-in-sign-out?version=4.0#sec-cucumber
- Sexy Validationを利用します
- カスタムマッチャを適切に利用する
- privateなメソッドのテストは書かない
- テストが必要ならクラスを分けてpublicにする
Module
- ヘルパーモジュールの場合は-ableという名前にします
Rails
- 規約通りの設定は省略する
MySQL
- テンポラリテーブルは'CREATE TEMPORARY TABLE'で作成する
- 特に理由がなければCREATE TABLEでCHARSETとCOLLATEは設定しない
- インデックス
- カーディナリティを考慮
- カバリングインデックスを考慮
Model
-
スキーマ定義
- 外部キーには
integer
ではなくreferences
を利用します -
null: false
でnot null制約を設定します - 1カラムのインデックスは
index: true
で設定します - 1行文字列はstring型に, 複数行文字列はtext型にします
- natural keyには
add_index :items, [:key1, :key2], unique: true
でUNIQUE制約を設定します
- 外部キーには
-
階層化する場合はtable_name_prefixメソッドを定義する
-
パラメタの変数名はモデルでは
attributes
、コントローラではparams
と名付けする
SQL
-
INSERT INTO table(c1, c2)
でカラムを省略しない
View
-
render model
,render models
での_modelパーシャル呼び出しを積極的に利用します
Controller
- StrongParametersのネストを正しく指定します
Locale
- エラーメッセージの末尾には句点(。)をつける
- ネストした設定はネスト先のモデルでまとめて設定する
フォーム
- collection_check_boxにはappend_hiddenオプションを設定
- 「〜」「未満、以下、以上」はどちらかに揃えます
- placeholderは積極的に設定します
- ラジオボタンにはラベルを設定します
label
= f.radio_button :blood_type, :a, checked: f.object.blood_type
| A型
- 入力不備のアラートは空の場合には基本的に出しません
- 未選択状態の場合は「▼項目名」のように選択肢と異なることがわかるようにします
- 必須項目には必須マークを表示します
ワークフロー
- チケットへのコメントの際は前のコメントを再確認します
プルリクエスト
- プルリクエスト作成前に各コミットを自分でレビューします
Github
- インデントの差分確認ではw=1を指定する