なぜコメントを書かないと後で読めなくなるのか

コードを書いているときは、変数の意味も処理の流れも頭に入っています。

しかし、その記憶は時間とともに急速に薄れます。数か月後に見返したとき、自分が書いたコードなのに読み解けない、という経験は珍しくありません。この記事では、コメントを書くべき理由と、どの程度・どこに書けば効果的かを整理します。

コメントがないコードで起きること

変数名がx、yのように抽象的で、処理名も内容を表していない場合、数か月後にそのコードを見返しても、何をしているのか把握するまでに時間がかかります。

Sub Process1()

Dim x As Long
Dim y As String

x = Cells(Rows.Count, 1).End(xlUp).Row
y = Cells(2, 3).Value

If y = "済" Then
Rows(2).Delete
End If

End Sub

このコードは動作しますが、xが何を表す変数か、yが何と比較されているのかは、コードを一行ずつ追わないと分かりません。コメントも変数名も、後から読み解く手がかりを何も残していない状態です。

コメントと変数名を加えると何が変わるか

Sub Process1()

'最終行を取得
Dim ls_rw As Long
ls_rw = Cells(Rows.Count, 1).End(xlUp).Row

'C列のステータスを確認
Dim status As String
status = Cells(2, 3).Value

'「済」なら行を削除
If status = "済" Then
Rows(2).Delete
End If

End Sub

変数名をls_rw(最終行)、status(状態)に変え、処理のかたまりごとに一行コメントを添えるだけで、同じ処理でも読み解く時間が大きく短縮されます。

コメントは誰のために書くのか

コメントは、他人に引き継ぐときだけのものではありません。

数か月後にコードを読み返す、自分自身のために書くものでもあります。コードを書いている最中は「なぜこう書いたか」という文脈が頭の中に残っていますが、その記憶は1週間もすればかなり薄れます。コメントは、その消えていく文脈をコードの中に保存しておく作業です。

押さえておきたいこと

① 「何をしているか」より「なぜそうしているか」を書く

Cells(Rows.Count, 1).End(xlUp).Rowというコード自体は、読めば「最終行を取得している」と分かります。それよりも、なぜここで最終行が必要なのかという理由を書いておく方が、後から見返したときに役立ちます。

② 処理のかたまりごとに、一行で十分

一行ずつコメントを付ける必要はありません。「ここからここまでは何のための処理か」という単位で、区切りごとに一言添えておけば十分です。

③ 変数名も、コメントの役割を持つ

xやyのような名前は、コメントを読むまで意味が伝わりません。ls_rwやstatusのように、名前自体が説明になっていれば、コメントの分量自体を減らせます。

まとめ

コメントは、数か月後の自分を含めた「未来の読み手」のために書くものです。処理のかたまりごとに一行、なぜそうしているかを書き添えるだけで、コードの読みやすさは大きく変わります。体系的に学びたい方は、JIMOVEの動画講座もご活用ください。

よくある質問

Q. コメントは、コードの全ての行に書くべきですか?

すべての行に書く必要はありません。処理のかたまりごとに、何を目的とした処理かが分かる単位で書けば十分です。

Q. コメントと変数名、どちらを優先して直すべきですか?

優劣はありませんが、変数名を分かりやすくすることで、必要なコメントの量自体を減らせます。両方を組み合わせるのが効果的です。

Q. 既存のコードに、後からコメントを追加してもいいですか?

問題ありません。コードを読み解きながら、理解できた部分から順にコメントを追加していく方法は、コードを読み解く練習としても有効です。

動画で学びたい方へ

「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。

VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。

動画で学ぶExcelマクロ|JIMOVEオンラインスクール

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール