More Related Content Similar to 【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~ (20) More from Developers Summit (20) 【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~1. ⓒ 2015 LINE CORPORATION
コードレビューの進め方
〜全員で行う品質の維持〜
2015/9/14 LINE Fukuoka
きしだ なおき
7. Work In Progress(WIP)パターン
• ブランチを作る
• とりあえず空コミット
• リモートへプッシュ
• Pull Requestを作る(WIP)
• 作業する
• コミット
• プッシュ
• セルフレビュー
• Pull Request更新(WIPをはずす)
• レビュー
• マージ
23. SQLの改行
× SELECT shohin.name, bunrui.name FROM
shohin LEFT JOIN bunrui ON
shohin.id=bunrui.id
○ SELECT shohin.name, bunrui.name
FROM shohin
LEFT JOIN bunrui on shohin.id=bunrui.id
24. 用途の決まった名前
• 変数
- i 整数
- e 例外
• メソッド
- getで始まるメソッドはイミュータブルに
• 通信したりデータベースに書き込んだりしない
• クラス
- XxxErrorはextends Errorっぽい
30. 適切なコメント
• JavaDoc
- publicなメンバにはJavaDocコメントを書く
• @paramなどを埋める必要はない
- 戻り値booleanにはJavaDocを書く
• true/falseの意味するところはコンテキスト依存
• 処理に従ったコメント
- if( data.isEmpty()) hoge()
• ×データがあるときにはhogeをしない
• ○データがないときにhogeをする
• なにもしないブロックにはdo nothing等
• いつもと違うことをするときにはコメント
- forEachのラムダ内でのreturn
35. Stream
• ソース・中間処理・終端処理を意識する
• ソース
- stream() / Arrays.stream() / Stream.of()
• 中間処理
- map() / flatMap() / filter()
• 終端処理
- anyMatch()
- collect
• toList() / toMap() / joining()
37. Optional
• return nullを書かない
• isPresentでの判定をなるべくさける
- ifPresentを使う
- if(optFoo.isPresent()){
someProc(optFoo.get());
}
- optFoo.ifPresent(foo -> {
someProc(foo);
});
39. ロジックの正しさ
• 条件の不備
- (name != null && name.isEmpty()) ||
name != null
- コピペミスだった
• 値設定もれ
• ぬるぽ
- メソッドに渡ってこないはずだとしても
nullには気をつけたほうがいい。
- あとで他から呼び出されることもある
46. コードレビューの効果
• コード品質向上
• 仕様共有
• 小さなノウハウの共有
• コードレビューのやりかたの共有
• コードの健全性をたもつ
- 動くんだけど死にそうなコードとかがないように
• 自分の考えを明確化できる
• ブログの間違いに気づく
- もっといいAPIがあると指摘したら、
「きしだのはてな」に書いてあったと返される
49. Gitが使えない場合
• 会議
- 一日一時間とか
• メール
- メーリングリストを使う
• チケット
- タスク管理・バグ管理システムを使う
• ソースのコメントに記述
- http://d.hatena.ne.jp/camlspotter/20120814/1344919762
• レビューツールを使う
- ReviewBoardなど
• がんばってGitを使う
• LINE Fukuokaに転職する