Slide 1

Slide 1 text

海外の記事からコードレビューの Best Practiceを集めてみました 2022/10/12

Slide 2

Slide 2 text

自己紹介 ● Hank Ehly(名:ハンク 姓:イーリー) ● ENECHANGE株式会社 ● qiita.com/hankehly ● github.com/hankehly ● connpass.com/user/hankehly

Slide 3

Slide 3 text

やったこと 日本語で書かれている技術ブログ記事を参考せずに コードレビューのベストプラクティス情報を集める

Slide 4

Slide 4 text

1. コードレビューのチェックリストを作る ● 決められた質問やルールを用意する ● 頻繁に起こるエラーの見落とし対策 ● 期待値が明確になる 例えば… ● 設計 – 既存システムと調和する?ライブラリーに移動するべき? ● 機能 – ちゃんと動く? ● 複雑さ – “汎用性” を過剰意識していないか? ● コメント – コメントは理由や背景を説明するべき (コードの挙動ではない) ● セキュリティ – 攻撃者に利用される穴を開けていないか? ● ドキュメント – 更新している? ● テスト – 修正されたコードはカバーされている?

Slide 5

Slide 5 text

● 間違いに焦点を当てがち ● 良かった点に関して、励ましと感謝の気持ちを伝える ● 正しいことを教えるほうが価値がある場合もある => ENECHANGE では「BE OPEN」というValueがある。良いことも悪いこともオー プンに共有し、お互いの意見を尊重する姿勢を大切にしている 2. 良いこともオープンに共有する

Slide 6

Slide 6 text

3. 指摘内容について理由を書く ● 「何」だけではなく「なぜ」を説明する ● 問題の解決方法は複数ある場合が多い ● コードレビューのコメントで知識や経験を共有する 【良くない】 この関数は、マルチスレッドをやめた方が良いと思います。 【良い】 この関数は、マルチスレッドにするとパフォーマンス的なメリットがないので、シングルスレッドに 変えた方が良いと思います。

Slide 7

Slide 7 text

4. 一度にレビューするコードをほどほどに ● 400行を超えると、不具合を発見する 能力が低下する ○ シスコシステムズの調査結果 ● 一度に一時間以上続けない ○ 理想的に25分以内 ● 目安として1行3秒

Slide 8

Slide 8 text

● レビューしやすいように、変更内容を案内してあげる ● 例: 先に見るべきファイル ● 例: 変更した理由の説明 => 補足コメントを書く段階で不具合に気づくこともある 5. コードレビューを依頼する前に、補足コメントを書く

Slide 9

Slide 9 text

6. ベストプラクティスを自動化する ● レビュアーの自動アサイン(GitHub CODEOWNERS) ● GitHubラベルの自動付与 ● コードの静的解析 ● メトリクスの計測 Cyclomatic Complexity (Radon - Python)

Slide 10

Slide 10 text

● ほとんどの場合、GitHubなどのコメントのやりとりで十分 ● 対面でのコードレビューの方が効率がいい場合もある: ○ 変更内容が複雑 ○ レビューを依頼した人と、レビューする人の知識 /経験の違いが大きい ● Zoom / face-to-faceなどで話しながら 7. 対面でのコードレビューの方が効率がいい時がある

Slide 11

Slide 11 text

● perfectionism is the enemy(直訳: かんぺきさは敵だ) ● 細かいことでレビューが長くなったことはありませんか? ○ 変数を定義する順番 ○ if-else vs (X ? Y : Z) ○ ファイルの分け方 ● 「議論にかかる時間」と「問題の重要度」の比率を考慮する ○ もっと価値のある作業を優先しよう ● チェックリストが役に立つ! 8. パーフェクトを目指さない

Slide 12

Slide 12 text

9. コードレビューの前に、CIビルド+テストを終える ● 無駄をなくすので、レビュー時間が減る 案: CIが終わったら、レビュアーを自動的にアサインする

Slide 13

Slide 13 text

● コードレビューが長引くほど、コンテキストスイッチが大変になる ● コードレビューは “二の次” に行う作業ではなく、優先的に行うべき 10. 迅速なレビューとフィードバックを提供する

Slide 14

Slide 14 text

Airflow(OSS)のハンズオンワークショップを開催します 定期的なバッチ処理を CRON で実行している方、 以下のことで悩むことはありませんか? ● ジョブ間の依存関係の管理 ● 実行状態の確認 ● エラー時のリカバリ 10/29日(土) Airflow: ワークフローを作成、実行、監視する ための OSS プラットフォーム

Slide 15

Slide 15 text

参考記事 ● What to look for in a code review ● 5 code review best practices ● Best Practices for Code Review ● Code Review Best Practices ● 6 code review best practices for a happier codebase and team ● Nitpicky Code Reviews Are a Drag ● Best Practices for Code Review ● 16 Tech Leaders Share Smart Best Practices For Reviewing Code