なんのための方針か
Railsでサービスを開発していると、nilチェックの仕方もルール化できると効率が上がるためチームとして決めると良い。
毎回どこまでチェックすべきか考えると効率が悪い。
方針
- 各入力がnilableかどうか考える
- nilableの入力は、nilのパターンでどうするか仕様を考える
- デフォルトの値を使う→conversion method(to_sとかto_iとか)
- 処理をスキップする
- nilableじゃない入力はnilパターンは想定しない。想定外パターンは落としたほうが発見しやすい
解説
1で入力とは、
- 引数
- has_many, belongs_toなどのassociation
- カラムの値
nilableとはnilになる可能性があるかどうか
- 引数はnilableだと考えておいたほうが良い
- associationはhas_manyの場合はnilableではない
- belongs_toはrails5以降はniableではない(optional: trueをつけない限り)
- カラムの値は必須じゃないものはnilable
まとめ
nilチェックというとnilのパターンを消したくなるんだけれど、Railsの開発においてはnilは日常茶飯事なので、nilのパターンを意識するということが大事だと思います。