🙄

これが俺の最強アノテーション

2025/01/28に公開

Daily Blogging38日目

Tidy First?読んでます

コメントって結構書く内容が人によってまちまちで、質の担保難しいですよね

結論

これで大丈夫

アノテーション 意味 用途
CONTEXT コードの背景や文脈 コードが存在する理由を説明する。
TRADEOFF 設計や実装のトレードオフ 性能、拡張性、保守性など、選択肢を比較した際のトレードオフを記録する。
WARNING 注意が必要な箇所 パフォーマンスなど発生する可能性のある問題点などを記述する。

良いコメントとは

よくいうのが、「コードで表せないこと」をコメントに残すということ
コードに書いてあることをコメントで書いてもそれはただ冗長な行が増えるだけ

これは書く必要がない、むしろ書くことによってコードリーディングの時間を増やしてる悪い例

# ユーザーの名前を取得する
user_name = user.name

t_wadaさんは、「コメントにはwhy not」を書こうって言ってる
https://x.com/t_wada/status/904916106153828352

アノテーション

コメントには、いくつかのアノテーションが存在してる。

アノテーション 意味 用途
TODO 後でやる 将来的に実装や修正が必要な箇所を示します。
FIXME 既知の不具合 現在のコードに問題があり、修正が必要であることを示します。
NOTE なぜこうなったか 特定の実装が行われた理由や意図を記述します。
HACK 要リファクタ 一時的または強引な実装で、将来的に改善が必要な箇所を示します。
REVIEW 意図した動作がレビュー必須 コードやロジックが正しいかどうか、レビューが必要な箇所を示します。
WARNING 注意 コードの使用に関して注意が必要な箇所を強調します。
OPTIMIZE ボトルネック パフォーマンス改善が望まれる箇所を示します。
XXX 危険!問題がある 深刻な問題や不安定な箇所を示します。
CHANGED どう変更したか 変更履歴や改修内容を簡潔に記述します。

アノテーションを使うことで次のメリットがある。

  • 書き方の統一ができる
  • そのコメントが何を指しているのかが明確
  • 書くべきことがわかる

アノテーションの問題点

とにかく使い分けが面倒くさい
そんなにたくさんあってみんな使ってるの??

うちはMEMOとTODO、時々FIXME
MEMOには色々書き、TODOとFIXMEは解消されることなく溜まる一方
やばいっ

うちの場合、とくにメンバー変更が激しいので仮にアノテーションをたくさん使うルールにしてもそんな浸透しない。

あと使い分けが大変。
XXXとかいつ使うん?
OPTIMIZEとか望んでる場合じゃない

じゃあどうする?

アノテーションのメリットもわかる。
特にアノテーションを利用することで、コメントにはこう言ったことしか書いちゃいけないんだってなる。
じゃあこの要件を満たすアノテーションにしたらいいんじゃないのか

  • アノテーションの数を最小限にする
  • 使い分けが簡単
  • コメントとして必要なもの

結論(2回目)

コメントに書くことって大体これ

  • なんでそのコードが必要なのか
  • パフォーマンスの観点から見た問題点
  • 今後こういった問題が発生するかも

だからこの3つのアノテーションでいけるはず。

アノテーション 意味 用途
CONTEXT コードの背景や文脈 コードが存在する理由を説明する。
TRADEOFF 設計や実装のトレードオフ 性能、拡張性、保守性など、選択肢を比較した際のトレードオフを記録する。
WARNING 注意が必要な箇所 パフォーマンスなど発生する可能性のある問題点などを記述する。

これならt_wadaさんの「why not」の部分もカバーできる

Discussion