パルカワ2

最近はFlutterをやっています

コードリーディングする時にやってること

kenjiskywalker [1:15 PM]
@hisaichi5518: でかいソフトウェアのコードリーディングする時のコツ何かある?

hisaichi5518 [1:17 PM]
メソッドの見つけ方覚える
手帳に図を描く
くらい

kenjiskywalker [1:17 PM]
手帳か〜

hisaichi5518 [1:17 PM]
手帳に図を描くのあんまやらないけどw

kenjiskywalker [1:17 PM]
メモどうしてんの?

hisaichi5518 [1:17 PM]
してません!

kenjiskywalker [1:17 PM]
脳内スタック?

hisaichi5518 [1:18 PM]
そう
だからすぐ忘れて読み直す

kenjiskywalker [1:18 PM]
反復派じゃん

hisaichi5518 [1:18 PM] 
今日もまたデバイス読んでる

kenjiskywalker [1:18 PM]
w
なるほど。ありがとう

ってやり取りをしたけど、適当すぎたな!!!!と思って考えなおした。

例えば、ユーザー作成時に送信される確認メールを送ってる部分を読みたかったら以下のような事をささっとやる。

  • まずは、ユーザー作成を行うControllerを読む
  • create actionがあるけど、その中ではdeviseが使われてる
  • 継承してるapp/controllers/devise/registrations_controller.rbにそれっぽいコードがあるのかな?
  • Devise::RegistrationsController#createを読んでも送信してるっぽいところがない
  • 自分が、メールを送信するなら、データを保存した後だな?
  • とりあえず, Deviseに送信するメソッドあるだろうから、それっぽい名前で検索してみる
  • ag send # 大量に引っかかったので、別の単語で調べる
  • ag send_ --ignore-dir test # テストコードは邪魔なので省く
  • saveしたあとにhookということは、modelであれこれしてるのかな?
  • lib/devise/models/confirmable.rb というそれっぽいのがあった
  • after_create :send_on_create_confirmation_instructions, if: :send_confirmation_notification? というそれっぽいのがあった。
  • あとは、send_on_create_confirmation_instructionsを読んでいく

って考えてて、

  • 目的をはっきりさせる
  • その目的以外は深追いしない
  • 中途半端なところから読まずに起点から読む
  • こうなってるのかな?と想像しながら読む

というのが自分なりのコツ、というよりか、やってる事だなって思いました。