【結論】
・コードレビューとは、
チームが継続的に開発を行う為に
他人のコードをチェックする工程
・主に、バグが混入していないか?
セキュリティ上の問題は無いか?
拡張性/メンテナンス性が担保されているか?
という観点でチェックがなされる
・上記以外にも、コーディングに関する知見を
チーム全体で共有したり、
新人を育てる目的でも行われている。
【目次】
- コードレビューの機会が回って来た
- コードレビューの目的
- 要件通りに動作するのか?
- セキュリティは担保されているか?
- 拡張性/メンテナンス性が担保されているか?
- 継続的に開発を進める為の取り組み
- 《今日の学習進捗(3年以内に10000時間に向けて)》
【本題】
コードレビューの機会が回って来た
まだ入社して3週間ですが、「他人のコードを読むのは勉強になる」
という事で、明日から先輩のプルリクのコードレビューをすることになりました。
正直、リファクタリングの知見も殆ど無いので、
的確なコメントが出来るか心配ですが、一先ずコードレビューは
どの様な観点で行えば良いか、調べることにしました。
コードレビューの目的
そもそもコードレビューは何故行うのか?ですが、
現場の考え方にもよって異なるでしょうが、下記の様な理由が上げられます。
・バグが混入するのを防ぐ
・セキュリティ上の脆弱性が発生するのを防ぐ
・コードの拡張性やメンテナンス性を担保する
・チーム内でコーディングの知見を共有する
・新人を教育する
要するにチームが継続的に開発を進める為に行われる作業だと言えます。
要件通りに動作するのか?
まず第一に確認すべきは、要件通りに動作するかどうかです。
どれだけコードが綺麗に整理されていても、
正常に動作していなければ、意味がありません。
なので、初めに動作をチェックします。
そしてテストも全て成功するか確認します。
(自動テスト化されていても、念の為にチェックする)
また、テストコード自体が、有効なチェックを行っているか確認します。
セキュリティは担保されているか?
正常に動く事が確認できれば、次はセキュリティ上の問題が無いかチェックします。
・不正なパラメータを受け付けない設定になっているか?
・データが保存される前に、フォーマットやサイズなどのチェックがなされているか?
拡張性/メンテナンス性が担保されているか?
次は拡張性・メンテナンス性の観点でコードをチェックします。
・メソッド名などが、役割を表した明確な命名をなされているか?
・冗長(重複)したコードは無いか?
・コード規約に従っているか?
継続的に開発を進める為の取り組み
コードをチェックするという目的であれば、上記で達成されますが、
コードレビューには他にも下記の様な目的があります。
「チーム内でコーディングの知見を共有する」
「新人を教育する」
例えば、ある人がコードを実装して、もしそのコードにトラブルが発生した時に、
実装した本人がチームを抜いければ、改修にかなり苦労する事になります。
また、その人が様々な調査の据え、実装したコードは非常に貴重な知見になり得るので、
それらを共有しない事は、チームの損失に繋がります。
更に、チームは常にベテランだけで構成されている訳ではなく、
新人なども勿論参画する可能性があります。
そういった新人を育てる時に、実際にコードレビューを行わせて、
責任を持ってコードをチェックさせる事で、新人のスキルも高まり、
チーム全体の能力を向上させることに繋がります。
《今日の学習進捗(3年以内に10000時間に向けて)》
学習開始からの期間 :129日
今日までの合計時間:1233h
一日あたりの平均学習時間:9.6h
今日までに到達すべき目標時間:1178h
目標との解離:55h
「10,000時間」まで、
残り・・・「8767時間!」