就活の選考の際に初めてガッツリレビューしてもらいました。(約2ヶ月間)
その時に指摘されたことについて、自分なりにまとめておこうと思います。
初心者が注意されるようなポイントがいくつもあると思いますので、他の方の参考になればと思います。
プログラマが常に意識すべきこと
- 新人プログラマが知るべきプログラミングの原則6選!
- より汎用的になるように
- より簡潔になるように
- ネストが2重3重になっている箇所があったらネストを浅くできないか、リファクタリングできないか検討する。
- 同じようなコードが複数回でてきたらまとめられないか検討する。
- メソッド名からはずれた処理内容をコードしていないか確認する。
命名について
- ディレクトリ名はローマ字での命名は避けましょう。プログラミングでも同様です。
- クラス名はそのクラスの内容・責務を適切に表しているべきです。例えば、DataGetterと聞いただけではどんな内容のクラスかわかりません。もっと具体的かつ端的に命名しましょう。
- 基本的にメソッド名は動詞で始めましょう。
- 基本的には「クラス名+メソッド名」と並べた際に英語として適切であれば良い命名です。
- _HASHのようなsuffixは付けないようにしましょう。
- dataやinfoなどのように抽象的な命名は避けましょう。
レビューする人への思いやり
- ガード節を使いましょう。
ネストが深くならないように、また、無駄なコードを実行しないような工夫です。
https://qiita.com/kouyan/items/7b8b456b626447a1e24e
- 基本的に一時変数のメリットはあまりありません。削除しましょう。
説明のために一時変数にしたい気持ちもわかりますが、大抵の場合はメソッド抽出をし、適切なメソッド名をつけた方が、再利用もでき、テストもかけるので推奨されます。
リファクタリングをするに当たっていくつかのポイント
-
ネストはなるべく浅く
- if文のネストが減らせないか検討
- ガード節なども使用
1メソッド1処理
内容を的確に表現した命名
同じような処理は共通化
意味のある単位でメソッドとして抽出できないか検討
eachなどではなくmapを採用できないか検討
その他細かい注意箇所
- Ifで否定の場合はunless文を使用するのがいいでしょう。
- 後置ifで簡潔になる場合は積極的に使いましょう。
ただ、闇雲に使うと返って可読性が低下することもあるので注意してください。
https://qiita.com/jnchito/items/4e47559a4c821474233a
- メソッドは依存しないように独立させる