🌊

レビューコメントを長期的な成長に活かすためのテクニック

2024/08/23に公開

レビューコメントを長期的な成長に活かしたい。

同じ様なコメントを多くもらってしまっている。
これは根本的な基礎知識が不足している際に起きる現象かもしれません。

レビュー者の思考や意図を理解し、レビュー者と同じ思考が出来るだけの前提知識を学び
根本的な原因が同じレビューコメントを何度ももらわない様に気をつけていきたいです。

表面的にもらったコメントに対応する問題

このパーツはキャッシュしておいて、次回実行時に再度計算されない様にしたほうが良い

あなたはシンプルにコメントに従って修正したとする。
確かに、このPullRequestではそれで完結するかもしれないが問題がある

問題点は以下2点

  • レビュー者のコメントに至るまでの思考回路が理解できていない
  • あなたはその思考をするための、前提知識を学んでおらず、成長していない。

思考回路を理解せず場当たり的に改善

このパターンはキャッシュするんだ、覚えておこう!
これで終わってしまう、確かにいつかは全パターン網羅できるかもしれないが。

ロジックを理解せず全パターン試してみるのは
確率の計算で全パターンを試験テスト中に試してみる様なもので再現性がない。

Dパターンの実装時にキャッシュするか判断できそうですか?

  • Aパターンはキャッシュ
  • Bパターンはキャッシュ
  • Cパターンはキャッシュしない

個別パターンだけ理解しても、応用が効かない。

聞くべきは、思考回路

相手はコードを見ていて、キャッシュしたほうがいいなと考えた。
そこにはキャッシュをすべき基準があり、その基準を満たしたのでコメントをしたわけだ。

この処理はキャッシュしておいて、次回実行時に再度計算されない様にしたほうが良い

上記の質問が来た際に本当に行うべきは
「処理をキャッシュをする条件をどの様に判断していますか?」 と聞くことだ。

得られる回答例

  • Aさん:計算コストが高いものは memo 化したい
  • Aさん:計算しても、特に値が変わらないのにものは再度計算が走らない様にしたい
  • Bさん:オブジェクトたくさん作っている処理はキャッシュしたいと思っている
  • Cさん:ソートロジックとかはキャッシュしたかな〜
  • Dさん:公式でキャッシュ基準に関する資料出てたよ!
  • 全員:そんなものがあったんだ、知らなかった〜(みんなハッピー)

「計算コストが高そう」と気づく為の「前提知識」を知り、学ぶ

計算コスト高いならキャッシュする

思考回路を聞いている中で 「計算コストが高そう」 と見積もってる人たちが居ます。
なぜ計算コストが高そうだと思えるのか、高そうだと思うものがどう言うものが理解する必要があります。

聞いてみましょう

Q:計算コストが高くなるのってどう言う時ですか?
A:リストコンポーネントで大量の項目をマップ処理する場合、各レンダリングサイクルで再計算が発生するため。

Q:その発想をする為に必要な前提知識って何かありますかね...?
A:Reactの関数型コンポーネントのライフサイクルの挙動を理解しておくと良いよ

勉強すべき「前提知識」が明確になる

ここまでの流れで、根本的な基礎知識として知らなければならないことが明確になります。

  • 【学ぶべきこと】
    • 「Reactの関数型コンポーネントのライフサイクルの挙動」
  • 【どのレベルまで?】
    • 「どう言った処理がレンダリングコストが高いのかを見積もれる様になるまで」
  • 【どの様に?】
    • 「XXXXのサイトを見るといいよ」

勉強した項目とレビューの指摘が紐づく (リンクする)

何を、どれくらい細かく理解すべきなのかが明確になりました。
根本的な基礎知識を得つつ、同時に利用方法も既にに紐づいています(リンクされてる)

根本的な原因が同じレビューコメントを何度ももらわない為に。

指摘されてる人から見たら毎回違う指摘に見えてるでしょう。
でも指摘している側からすると「同じ」指摘です。

  • ソートの時はキャッシュ
  • 逆順ソートの時はキャッシュ
  • リストコンテンツが多い時はキャッシュ
  • 文言の表示だけはキャッシュしない
  • ........etc

レビュー者の思考を理解し、その思考をするための前提知識を学び
根本的な原因が同じレビューコメントを何度ももらわない様に気をつけていきたいです。

ただ基礎を勉強することとの違い

ただ、ライフサイクルを勉強してと言われて勉強していた場合、計算コストの見積もりとキャッシュをするかしないかの判断に使おうと言う発想に紐づきません。
きっと次回もコードで気付けずに、同じ指摘をされるでしょう。

「ライフサイクル」の理解だけでは、その基礎知識を使うことが出来ないので使い所
使い方を理解して初めて理解したと言う状態になれます。

  • Aパターンはキャッシュ
  • Bパターンはキャッシュ
  • Cパターンはキャッシュしない

Dパターンの実装時、自分のコードを見て
「あ、もしかしたらこれレンダリングコスト高いかもな〜」

そう思える様になったら、レビューでもらったコメントを理解したということになりそうです。

会社の基礎研修

会社の基礎研修で何に使うか割らない基礎を勉強していると感じているかもしれません。
それは上記の具体的な利用方法や、コーディング時に気が付けるようになるという
紐付けがまだ薄いからかもしれません。

Discussion