レビュー中にもやっとしたことをまとめる
コードレビューってする側からすると
とてもハードルが高い?と思われ勝ちなイメージなのですが
僕が入っているプロサー内ではある一定ラインまではレビューが活発に行われていて
そのおかげで会社のチーム内でのレビューも率先して出来ている。
そもそもレビューとは
~Weblio辞書から~
一度決められた物事を、改めて調査したり検討したりすること。現在は、批評や評論という意味合いで使用されることが多い。また、商品や作品などについて、評価を付けたり感想を述べたりすることを「レビューする」と表現する。
と辞書では書かれていましたが僕自身は
評価を付けたり
よりも
感想を述べたりすること
これがかなり大事だなと痛感しております。
何が言いたいかって
みんなレビューをすることに対して相手そのものを否定していると勘違いしてるし
レビュー受ける人も自分の技術を否定されていると
勘違いしている人は割と多いのかなと思います。
レビューはあくまでもその人の感想だってことぐらいに留めておけば
お互いに気が楽だろうなぁと感じてます。
実務に入っているとその時の案件や環境や方針で
あのときはAパターンの実装は良くないと言われたけど
今回はAパターンでやっていこうとなるのだから
システムも人間と同じ生き物みたいですよね。
前置きが長くなりましたが早速本題にはいります〜
経緯
チーム内で簡単なレビューを今回の案件でしていくことになり
僕は自分の実装を少しでも早く終わらせて他メンバーのコードを
これでもかってぐらい舐め回すように見ております←汚い
そんなときにもっとこうしたほうがお互いにとって
やりやすかったのでは?(ここでもやっとしました)ということがあって今回の記事作成にいたります。
あとから紹介しますがこの考えに至るまでに
「リーダブルコード」や「Web+DB PRESS」などを読んでいて
インプットしたことを活かしたいとなりました。
もやっとしたこと
では具体的にどんなことかと言うと
今回の案件ではLaravelを使って実装をしております。
よくあると思うのですが権限毎に同じ画面(仮にindex.blade.phpとする)でも表示される内容が
違うといった実装のFeatureテストをレビューしていたのですが
今回、index.blade.phpに対して3つのFeatureテストを作っていく対応で
1つ目のコードにはその権限毎の表示対してのテストが実装されていなかったのです。
レビューをしていた僕はコメントする前に考えました。
1. 忘れちゃったのかな〜
2. 仕様把握出来てないのかな〜
3. 別のテストにまとめるのかな〜
そして僕はとりあえず下記のようなコメントを残しました。
※意図が伝わるように内容は変えてます。
権限別に表示されるテストがないのであったほうがいいかなと!
※別タスクで実装予定であれば問題ないです。
そして返ってきたコメントで
予想通りの別タスクで実装を予定しているとのことでした。
過去の自分であればこれで話は終わったのですが
少し成長したいまの自分は違います。
些細なことですがいくつかの課題が見つかったなと思ったのです
ちょっと文章だけで状況が伝わりにくいですが
皆さんは僕が感じた課題がなにかわかりますか?
僕は以下の課題を見つけました。
- レビュー者が確認しないといけない状況
- 実装者が返信しないといけない状況
- 実装者の意図が伝わらない実装
言葉があっているか不明ですが上記の3つが思い浮かびました。
1.レビュー者が確認しないといけない状況
割と日々の業務で僕自身もやってしまっているのですが
レビューする人が実装者に確認をしないといけなくなる実装って
効率良くないなと思うわけです。
だって
①レビューする→②意図がわからず確認する→③返事が来る→④再度レビューする
この②と③の工程もったいないですよね?
無くすことはできるんですよ。
でもやらなくても案件の対応はできちゃうんですよね。
それでも改善できる箇所があるのであれば改善するしかないと
僕は思います。
2.実装者が返信しないといけない状況
1.とは逆の立場になるのですが実装者側にとっても
もったいない工程ができちゃうんですよね。
また、実装者にとっては普通はこうするだろうから
これでレビューしてもらおうだと
レビューする側の負担が大きくなるので見てもらうからには
相手の負担を軽く出来ないか考えていくことは必須だと思う。
3. 実装者の意図が伝わらない実装
そもそも実装者は意図があってコードをかいてレビューしてもらうけど
その意図がレビューする人に伝わらなければ
多分半年以上たったあとに自分が書いたコードを見ても
自分ですら意図がわからなくなってると思う。
コードから意図が伝わるようにすることってめちゃくちゃ重要だと思うわけです。
コメントについて
あれこれ述べたところでじゃあどうするんだよって話だよね!!!←別に意識してないよ
今回の件で僕であればコードにコメントを残しておこうと思いました。
例えば下記のような内容です。
// 表示の切り分けのテストは〇〇Testで実施
〜以下実装
個人的にはもうこの対応が今回の件で言えば最強じゃないかと思うわけでなのですが
みなさんならどうしますか?
あまりコメントを長ったらしく書くのは良くはないと僕は思っているのですが
上記のコメントがあるだけでレビューする人も実装者も無駄にやり取りをしなくて済むようになったと僕は思うので必要なコメントだと思うわけです。
半年以上たった後に実装者、もしくは第三者が見たときに
「あれ、このテストやってないのか、、あ、なるほどね!」
となるでしょう←保証はない
ほんと些細なことかと思われますがこういうところから
僕は改善していくしかないのでしっかりと考えてみました。
もしも参考になったと思った方は最後にLGTMをいただけると嬉しいです(´ω`)
参考
リーダブルコード
良いコードを書くのには欠かせないバイブル的な役割の本ですね!
個人的には自力で調べて実装できるよって人からおすすめします。
最近プログラマー目指し始めました!って人が読むと
良いことをしているんだけど実装はできないみたいなことになるのでおすすめできないです。
WEB+DB PRESS
会社で定期的に購入されているのですが過去のもとってあって
最近は毎日借りて読んでます。
ひとつの情報だけでなく幅広く記事にしてくれているので
読みたい内容だけ読むのもいいですよ。
初めてのSQL
意外かもしれませんがここでSQLを出しますw
なぜかというとこの書籍の内容がCLIで実行していて
書かれているSQL文が見やすいように書かれている
そこが個人的にも面白くて今回の記事で紹介しました。
SQL自体の勉強にもめちゃくちゃなりますよ。