2023/06/24 開催「PHPカンファレンス福岡2023」(https://phpcon.fukuoka.jp/2023/ )の LT 資料です。
詳細:https://fortee.jp/phpconfukuoka-2023/proposal/ae71f3a7-4c3c-4c87-8816-8426bcc8d325
その説明、コードコメントに書く?コミットメッセージに書く?プルリクエストに書く?2023/06/24 PHPカンファレンス福岡 2023@okashoi
View Slide
こんなこと、ありませんか?
先輩「この実装はどうしてこうなっているの?」自分「ここは〇〇という理由でこうしています!」先輩「了解です、その説明はコードコメントに書いておくとよいので追記お願いします~」コードレビューにて......
先輩「この実装はどうしてこうなっているの?」自分「ここは〇〇という理由でこうしています!」先輩「了解です、その説明はコードコメントに書いておくとよいので追記お願いします~」コードレビューにて......🤔ナンデ?
• コードコメント• コミットメッセージ• プルリクエスト(説明欄、コメント)コードの(コードで表現できない)説明を書く場所
コードコメント「バグを修正した」→ あとからコードを読む人は変更差分を見ているわけではない適切な場所を選ばないと......
コミットメッセージ「この実装でいいか悩んでいる」→ あとから読んでも「お、おう......」適切な場所を選ばないと......
プルリクエストで「〇〇という理由でこう実装した」→ あとでコードを触るときには目に入らない適切な場所を選ばないと......
「誰が」「いつ」読むのか?を考えると「どんな情報を」書けばいいか?が分かる!ポイント
誰が将来そのコードをメンテする人(自分含む)いつ次にそのコードを修正するとき実装から挙動を読み取るときコードコメント
どんな情報を「あえてそうしている」こと(後述)→ 書かれなかったこと(意図や理由、捨てた実装等)はコードには残らない次点で認知負荷を下げる説明など(割愛)コードコメント
メジャーなライブラリがあるのに自前で実装しているユースケースが特殊で、適切なオプションが提供されていなかった→ あとから同じ轍を踏んで時間を無駄にしたりしないよう「あえてそうしている」ことの例
誰が将来そのコードをメンテする人(自分含む)レビュアーいつ今のコードになった時期や理由を探るときプルリクエストのレビューをするときにステップごとに見るコミットメッセージ
どんな情報をコードの変更の目的、理由コミットメッセージ
参考資料https://www.praha-inc.com/lab/posts/commit-message
誰がレビュアーいつコードレビュー時※本発表ではチーム開発の文脈に限定。 OSS 等ではソフトウェアの変更に対するドキュメントの役割も持つ。プルリクエスト(※)
どんな情報をプルリクエストの背景説明• 「〇〇をした際に□□する機能を追加」• 「××の条件下で△△というバグが発生していたので」実装全体の説明、相談事項• 「ここ実装めっちゃ悩んだ(悩んでる)」• 実装のときに参考にしたドキュメント等プルリクエスト
「誰が」「いつ」読むのか?を考えると「どんな情報を」書けばいいか?が分かる!ポイント(再掲)
「誰が」「いつ」読むのか?を考えると「どんな情報を」書けばいいか?が分かる!ポイント(再掲)実は、コードの説明だけでなくコミュニケーション全般に言える話(......という話は別の機会?に)
冒頭で紹介した 3 つのメッセージはそれぞれどこに書くべきだったか考えてみてくださいね!おまけ
所属:株式会社ウィルゲート登壇:寄稿:岡田 正平/おかしょいTwitter: @okashoiGitHub: @okashoi
補足資料(LT では話さない)
(参考)コードコメント vs. コミットメッセージコードコメント コミットメッセージその時点のコードに対する説明点の情報コミットに紐づかない具体寄りコードの変更に対する説明2 点間をつなぐ線の情報(変更前後の)コードに結びつく抽象寄り辿れる
(参考)コミットメッセージ vs. プルリクエストコミットメッセージ プルリクエストコードの変更に対する説明2 点間をつなぐ線の情報開発者にとって意味がある単位の変更プルリクエストに紐づかないソフトウェアの変更に対する説明複数の点をつなぐ情報ユーザにとって意味がある単位の変更複数のコミットに結びつく具体寄り 抽象寄り辿れる