Code rendezvous(1) - hamamatsu-rb/hamamatsu-rb.github.com GitHub Wiki
- コードは https://github.com/hamamatsu-rb/coding-dojo に
- nn_user1_user2 フォルダを作成する
コーディング道場(Coding Dojo)
皆で1つの課題をプログラミングし、書いたコードをお互いにレビューします。 ペアプログラミング、TDD/BDD、コードレビューなどを体験できます。 Coding Dojoと呼ばれるものです。多分。 ( http://www.atmarkit.co.jp/fcoding/rails/articles/passionate/03/passionate03a.html )
- ランダムでペアを作る
- テストを書く
- テストが通るようにコーディングする
- 各ペア間でコードを見せ合い、レビューを行う。
- 次回のお題を決める
- PCが持ち込めなかった人は持ってる人とペアになりましょう
- プロジェクタに繋げるとコードレビューが楽です
- 次のお題の持ち込みを歓迎します。できれば数十分でできるようなサイズが良いです。
初回のお題は特に希望がなければ、以下の"CodeKata4 - Data Munging"あたりをやってみるつもりです。 (すでに一度やった人もいるでしょうが、CodeKataなので何度反復しても良いでしょう) (weather.datとfootball.datが無いようですね(uchiyama))
ペアプログラミング
自由にルールを作り、カスタマイズしながら進めればよいのですが(ルールは明示化した方が良いです)、その基本となるルールがない場合の叩き台にどうぞ(suchi)
- ドライバー: キーボードを打っている人
- ナビゲーター: 横でレビューしている人
ペアプログラミング10箇条
古いメモからなので出典がわかりませんでした→オブラブ(旧オブジェクト倶楽部)でした。
- ドライバー、ナビゲーターは5-10分毎で適当に交代しよう。ドライバーは引き際が肝心。ナビゲーターの助言が多くなったら交代。
- やることを紙に項目として書き出そう。終わった項目を横線で消そう。
- コードより先にテストを書こう。テストをパスさせるための最もシンプルな実装をしよう。
- ナビゲーターは、ツッコミの要領で助言しよう。
- もっとシンプルな方法はないか
- コードは意図を表現しているか
- クラスやメソッド、変数の名前は意図を表しているか。
- タイプミスはないか。括弧の数は合っているか。
- テストは先に書いたか。
- 次のテストはどう書こうか。テストし忘れていることはないか。
- 全体から俯瞰してバランスはとれているか。ヘンな方向に突き進んでいないか。
- コーディング標準にあっているか。
- ナビゲーターは、じれったくなったら「わたしにやらせて!」と言おう。
- ナビゲーターは、理解できないコードを見たらドライバーに聞こう。「なんでそうなの?」
- ドライバーは、ナビゲーターの助言にいつでも耳を貸そう。そしてその助言に返事をしよう。
- ドライバーは、行き詰まったら助けを求めよう。このメソッド、ちょっとお願いできないかな?
- 腹が減ってはプログラミングはできぬ。一緒にお菓子を食べよう。
- 楽しくやろう。Enjoy Pair Programming!
TIPS
上に独自ルールを加えるとよいでしょう。たとえば「ナビゲータがコメント(とくに間違いの指摘)するときは5秒待ってから」(ドライバーが直そうとしているときに横から指摘されるとストレスになる(今やろうと思っていたのに))、「画面を指で触らない」(そういうメンバがいた)、「モニタに付箋を貼らない」(視線にモニタ以外の文字が入ることが気になるメンバがいた)などがあります。
エディタやキーバインドをカスタマイズしていると作業効率が落ちるので、事前にどちらのマシンを使うか、どのエディタを使うか、もしくはファイルを共有して個々のマシンを使う、など進め方を相談してから始めるのがお奨めです。
TDD
@t_wada さんの「RSpecの入門とその一歩先へ」を写経してみるのが良いとおもいます。 (というかこれを、TDD/BDD入門に最初にやってみてもよかったですね)