良いソフトウェアとコードレビュー / Good software and code review のスライドを見た

nagasawaaaa
·
良いソフトウェアとコードレビュー

スライド

感想とメモ

良いソフトウェアの基準とは下記が満たされていること

  • 可読性

    • 見やすいコード、途中から入ってきた人間にも理解できるのが理想。そのため修正がしやすい。

    • 命名規則やコードのインデント、適切なコメントが大事。

      • 全ての変数や関数名を説明的にすればよい訳では無い。

      • 関数内で利用されるスコープの短い変数は1文字で命名してもOK

      • 使用頻度が多い関数は短く命名しても良い

    • コメントは書かないに越したことはないが、Howを説明するコメントは不要。しかしWhyを説明するコメントは有用である。(なぜそうしたのかを書く

    • リファクタリングと機能追加を一緒にやらない、リファクタリングのPRを出してから機能追加を行う

      • リファクタリングのPRからブランチを派生するか、一度マージしてから機能追加をするかが悩みどころ。ササッとレビューしてくれるとリファクタリングのPRの修正があればやるし、なければマージして機能追加ができる。

      • リファクタリングを行うためにはテストコードが必要不可欠だと思った。

    • ライブラリコードはドキュメント化する。

      • 自分で作った関数のドキュメントは必要みたいなことかな

  • 保守性

    • 仕様変更や追加があったとき触っても頭を悩ませない。

    • 保守性の高いソフトウェアは時間とコストの節約、エラーの減少、柔軟性(市場や技術の変化に強い)のメリットに繋がる。

    • モジュール性(プログラムを小さい部品に分ける)の高い設計を行う。

  • 効率性

    • 良い感じに早く動く(レスポンスが早い)し、そこまでマシンが重くならない

  • 信頼性

    • エラー処理が考慮されており、バグも少ない。

      • テストがちゃんと書かれている

      • 例外処理、エラーメッセージの適切に使用している

    • モジュール性の高い設計が必要不可欠。

  • 拡張性

    • 恐らく保守性とそんなに変わらん?

    • 抽象化

コードレビューとは

  • 良いソフトウェアを維持するための活動

  • チームのスキル向上と知識共有に役立つ。

  • また複数人が見ることによりコードの一貫性が確保される。

  • 戦略的コードレビュー

    • システム全体として適切かどうか

  • 戦術的コードレビュー

    • 将来AIに置き換わるかも

レビュイーのベストプラクティス

  • PRの説明を行う、変更内容と理由、見て欲しい部分を説明する

  • コード内に適切なコメントを付ける

  • 小規模で理解しやすい変更で提出する

  • 一つのPRには関連性のある変更のみを含める

  • フィードバックを受け入れる、防御的にならず対応する

  • レビュアーから質問があれば回答するし、必要であれば追加情報を提供する

  • レビュアーへの感謝を忘れない

レビュアーのベストプラクティス

  • 提出されたコードの理解を深める

  • コードの変更が必要となった背景や目的を読み取る

  • 改善点だけではなく良い点も指摘する

  • 指摘する問題点や提案の理由を明確に言語化する

  • 改善例やアイディアを提供する

  • 相手に対して尊重を持って接する、相手の意見を尊重する

  • なるべく早くレビューしてあげる

  • レビューが遅れることのよってチームの生産性に影響が無いようにする

@nagasawaaaa
札幌でフロントエンドエンジニアをやっている二児の父です。 日報とかを雑に書いていきます。