コードレビューの観点

f:id:ryoutaku_jo:20190415220409p:plain

【結論】

・コードレビューとは、
 チームが継続的に開発を行う為に
 他人のコードをチェックする工程

・主に、バグが混入していないか?
 セキュリティ上の問題は無いか?
 拡張性/メンテナンス性が担保されているか?
 という観点でチェックがなされる

・上記以外にも、コーディングに関する知見を
 チーム全体で共有したり、
 新人を育てる目的でも行われている。

【目次】

【本題】

コードレビューの機会が回って来た

まだ入社して3週間ですが、「他人のコードを読むのは勉強になる」
という事で、明日から先輩のプルリクのコードレビューをすることになりました。

正直、リファクタリングの知見も殆ど無いので、
的確なコメントが出来るか心配ですが、一先ずコードレビューは
どの様な観点で行えば良いか、調べることにしました。

コードレビューの目的

そもそもコードレビューは何故行うのか?ですが、
現場の考え方にもよって異なるでしょうが、下記の様な理由が上げられます。

・バグが混入するのを防ぐ
・セキュリティ上の脆弱性が発生するのを防ぐ
・コードの拡張性やメンテナンス性を担保する
・チーム内でコーディングの知見を共有する
・新人を教育する

要するにチームが継続的に開発を進める為に行われる作業だと言えます。

要件通りに動作するのか?

まず第一に確認すべきは、要件通りに動作するかどうかです。

どれだけコードが綺麗に整理されていても、
正常に動作していなければ、意味がありません。

なので、初めに動作をチェックします。

そしてテストも全て成功するか確認します。
(自動テスト化されていても、念の為にチェックする)

また、テストコード自体が、有効なチェックを行っているか確認します。

セキュリティは担保されているか?

正常に動く事が確認できれば、次はセキュリティ上の問題が無いかチェックします。
・不正なパラメータを受け付けない設定になっているか?
・データが保存される前に、フォーマットやサイズなどのチェックがなされているか?

拡張性/メンテナンス性が担保されているか?

次は拡張性・メンテナンス性の観点でコードをチェックします。
・メソッド名などが、役割を表した明確な命名をなされているか?
・冗長(重複)したコードは無いか?
・コード規約に従っているか?

継続的に開発を進める為の取り組み

コードをチェックするという目的であれば、上記で達成されますが、
コードレビューには他にも下記の様な目的があります。

「チーム内でコーディングの知見を共有する」
「新人を教育する」

例えば、ある人がコードを実装して、もしそのコードにトラブルが発生した時に、
実装した本人がチームを抜いければ、改修にかなり苦労する事になります。

また、その人が様々な調査の据え、実装したコードは非常に貴重な知見になり得るので、
それらを共有しない事は、チームの損失に繋がります。

更に、チームは常にベテランだけで構成されている訳ではなく、
新人なども勿論参画する可能性があります。

そういった新人を育てる時に、実際にコードレビューを行わせて、
責任を持ってコードをチェックさせる事で、新人のスキルも高まり、
チーム全体の能力を向上させることに繋がります。

《今日の学習進捗(3年以内に10000時間に向けて)》

学習開始からの期間 :129日
今日までの合計時間:1233h
一日あたりの平均学習時間:9.6h
今日までに到達すべき目標時間:1178h
目標との解離:55h
「10,000時間」まで、

残り・・・「8767時間!」