デキるプログラマだけが知っているコードレビュー7つの秘訣

Engineering

masahiro-nishimi
The present document can't read!
Please download to view
41
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Description
SonicGarden Study #11で放送された資料から一部スライドを抜いたものになります。
http://sonicgarden.doorkeeper.jp/events/13229

-----
優れたプログラマだけが優れたソースコードを書くことができます。

では優れたプログラマになるにはどうすれば良いでしょうか。

自分の書いたコードを、優れたプログラマに指摘してもらうことが一番の近道です。それがコードレビューです。たった一人でコードレビューも受けずに、ただ書き続けてもクソコードはクソコードのままなのです。

そこで今回は、良いコードが書けるプログラマになるための、コードレビューを上手に実践する秘訣を話します。
Text
  • 1. SonicGarden  Study  11  #sg_study   いつまでクソコードを 書き続けるの? デキるプログラマだけが知っている コードレビュー7つの秘訣 ソニックガーデン 西見 公宏 1  
  • 2. SonicGarden  Study  11  #sg_study   西見 公宏 Nishimi Masahiro 2  
  • 3. 自己紹介 SonicGarden  Study  11  #sg_study   西見 公宏 Masahiro Nishimi @mah_lab 昭和58年生まれ 東京育ち 2児(双子)の父親です 3  
  • 4. 今日お話する内容 1. クソコードとは何か? 2. 優れたプログラマとは何か? 3. コードレビューが改善の近道 4. コードレビュー7つの秘訣 SonicGarden  Study  11  #sg_study   4  
  • 5. SonicGarden  Study  11  #sg_study   1. クソコードとは何か? 5  
  • 6. SonicGarden  Study  11  #sg_study   「クソコード」とは・・・ 6  
  • 7. SonicGarden  Study  11  #sg_study   「クソコード」とは・・・ 読む人を怒りの渦に 叩きこむコードである 7  
  • 8. つまり •  「クソコード」とは読んだ人の怒りを体 現した言葉である。 SonicGarden  Study  11  #sg_study   8  
  • 9. クソコード3つの特徴 1. 読めないコード –  変数名が暗号/制御フローが無駄に複雑/メソッド名と処理の 内容が合ってない etc... 2. 要領の悪いコード –  言語レベルで用意されている機能を素直に使わない(例:Go を使っているのにゴルーチンを使わない) etc... 3. 意図がわからないコード –  フレームワークのレールに従っていない etc... SonicGarden  Study  11  #sg_study   9  
  • 10. クソコードかどうかは 読まれるまで分からない •  シュレディンガーの猫 •  読んだ人の当事者感によって度合いが変わ る(例:「え、このコード、俺がメンテするの!?」) •  自分で読んでダメだと思うなら、最初から 直して・・・。 SonicGarden  Study  11  #sg_study   10  
  • 11. SonicGarden  Study  11  #sg_study   2. 優れたプログラマとは何か? 11  
  • 12. 優れたプログラマ3つの特徴 1. 「読めないコード」を書かない。 –  読みやすいコードを書く。 2. 「要領の悪いコード」を書かない。 –  言語の特性を活かした要領の良いコードを書く。 3. 「意図のわからないコード」を書かない。 –  設計の意図が明確である。 SonicGarden  Study  11  #sg_study   12  
  • 13. 優れたプログラマを見極める簡単な試験 書いたコードの1行1行に対して、 以下の項目を質問する。 l どういう処理なのか? l どういう意図で書いたのか? SonicGarden  Study  11  #sg_study   13  
  • 14. SonicGarden  Study  11  #sg_study   3. コードレビューが改善の近道 14  
  • 15. まずは読まれなければはじまらない SonicGarden  Study  11  #sg_study   15   読む人に怒りをもたらすのが クソコード ならば 読む人がいなくては はじまらない
  • 16. 誰に読まれるのがベストか? SonicGarden  Study  11  #sg_study   16   優れたプログラマ
  • 17. 何故優れたプログラマが読むべきなのか? SonicGarden  Study  11  #sg_study   17   •  単純に同じレベルのプログラマが指摘しても、 指摘の内容に限界があるため。 限界の壁
  • 18. 優れたプログラマは限界を引き上げます SonicGarden  Study  11  #sg_study   18   •  レビューの中で小手先のテクニックに終始しない「優れ たプログラマの考え方」を伝えていくことで、チームの 限界を引き上げていきます。
  • 19. •  いくら優れたプログラマと言えども、闇雲にレビューを するのでは効果がありません。 ただし・・・ SonicGarden  Study  11  #sg_study   19   ・・・
  • 20. •  ソニックガーデンでも新しく入ったプログラマを教育す る手段としてコードレビューを取り入れています。 •  その中で気付いたポイントをいくつかピックアップしま した。 •  それが今からお伝えする「7つの秘訣」です。 より効果を上げるために SonicGarden  Study  11  #sg_study   20  
  • 21. SonicGarden  Study  11  #sg_study   4. コードレビュー7つの秘訣 21  
  • 22. 1. レビューの観点を明確にすること SonicGarden  Study  11  #sg_study   22  
  • 23. 1. レビューの観点を明確にすること •  リリース前レビューの話なのか、コード品 質の話なのか。 •  読む側も漠然と読んで、漠然とコメントを 書くのでは効果を生まない。 – 観点を明確にしてレビューすることで指摘す る側の精度も上がります。 SonicGarden  Study  11  #sg_study   23  
  • 24. 2. 我が身に返ることを恐れずに指摘す ること SonicGarden  Study  11  #sg_study   24  
  • 25. 2. 我が身に返ることを恐れずに指摘するこ と •  自分のことは棚に上げる! •  鋭くツッコミを入れられないなら、レ ビューの意味は無い。 •  指摘して自分の耳が痛いなら、自分にとっ ても成長のチャンスだと捉える。 SonicGarden  Study  11  #sg_study   25  
  • 26. 3. 何故悪いコードなのかを論理的に 説明すること SonicGarden  Study  11  #sg_study   26  
  • 27. 3. 何故悪いコードなのかを論理的に説明す ること •  「何となく汚い」は指摘ではない。 •  悪いコードだと判断したなら、相手が納 得できるように、論理的に説明する。 •  論理的に説明できないなら指摘をすべきで はない。 SonicGarden  Study  11  #sg_study   27  
  • 28. 4. 良いコードについて共通認識を持つ こと SonicGarden  Study  11  #sg_study   28  
  • 29. 4. 良いコードについて共通認識を持つこと •  コードレビューのあとに雰囲気が悪くなるの はチームで「良いコード」の認識が揃ってい ない証拠。 •  「良いコード」を共有することでチームとし て成長する。 •  認識を揃えるためには、あるコードを題材に ディスカッションの機会を設けると良い。 SonicGarden  Study  11  #sg_study   29  
  • 30. SonicGarden  Study  11  #sg_study   30   チームでディスカッションの 機会を持つ例
  • 31. 5. 小さい単位でレビューを繰り返すこ と SonicGarden  Study  11  #sg_study   31  
  • 32. 5. 小さい単位でレビューを繰り返すこと •  大きな単位だとレビューする側もされる 側も出番が回ってきにくい。 – 機会を増やすことでみんながレビュー体験を する/小口化することで習慣化する •  チーム全体で誰かの書いたコードをレ ビューするのも有効。 SonicGarden  Study  11  #sg_study   32  
  • 33. 6. 指摘は素直な気持ちで受け入れるこ と SonicGarden  Study  11  #sg_study   33  
  • 34. 6. 指摘は素直な気持ちで受け入れること •  指摘を素直に受け止められないと成長で きない。 •  受け入れた後は同じ失敗を繰り返さない。 – 漠然とコードレビューを受けて、その場はそ の場で何とかやり過ごして、また同じ失敗を 繰り返すメンタルモデルではダメ。 SonicGarden  Study  11  #sg_study   34  
  • 35. 7. 指摘は人格否定でないことを理解す ること SonicGarden  Study  11  #sg_study   35  
  • 36. 7. 指摘は人格否定でないことを理解するこ と •  自分が一生懸命書いたコードに対して手厳 しく指摘を受けるのは辛いこと。。 •  でも、指摘するのはコードであって、あな たの人格を否定しているわけではありませ ん! •  お互いに「コード」の話をしている、とい うことを理解した上で指摘をしましょう。 SonicGarden  Study  11  #sg_study   36  
  • 37. SonicGarden  Study  11  #sg_study   まとめ 37  
  • 38. 今日お話した内容 1. クソコードとは何か? 2. 優れたプログラマとは何か? 3. コードレビューが改善の近道 4. コードレビュー7つの秘訣 SonicGarden  Study  11  #sg_study   38  
  • 39. 今日お話した内容 •  クソコードとは読む人を怒りの渦に叩き こむコードである。 •  優秀なプログラマに読まれる機会があれ ば、その人のコードは劇的に改善する。  (※ 効用には個人差があります) SonicGarden  Study  11  #sg_study   39  
  • 40. 今日お話した内容 1.  レビューの観点を明確にすること 2.  我が身に返ることを恐れずに指摘すること 3.  何故悪いコードなのかを論理的に説明すること 4.  良いコードについて共通認識を持つこと 5.  小さい単位でレビューを繰り返すこと 6.  指摘は素直な気持ちで受け入れること 7.  指摘は人格否定でないことを理解すること SonicGarden  Study  11  #sg_study   40  
  • 41. SonicGarden  Study  11  #sg_study   ご視聴ありがとうございました! 41  
  • Comments
    Top