ひたすら業務でVBAを使っててあみだした、分かりやすく見やすいきれいなコメントが書けるようになるコツを5つ紹介していこう。
きれいなコメントが書けるようになる5つのコツ
- 最初に'----の点線で区切る
- コメントの前に1行空ける
- なぜそのコードを書いたかをコメントする
- どんなコード処理なのかを簡潔にコメントする
- ムダなコメントを書かない
この5つがコメントを書くときに重要になっていく。きれいなコメントを書くためには必須ということ。くわしく話していこう。
1, 最初に'----の点線で区切る
' -------------------------------------------------------
点線で区切るだけ。スクロールしててもパッとみどこからどんな処理か見やすくなる。この点線は、各プロシージャごと。またはファンクションごとに設定するといい。
2, コメントの前に1行空ける
Sub exampleProcess() ' ここにコメント--うえ1行は空白 Dim i As Long ' ここにコメント--うえ1行は空白 For i = 1 To 10 -- なにかの処理 -- Next i End Sub
コメントはなるべく1行あけて書こう。適度に空白があって、どこに対してコメントしてるか分かりやすくなるから。
ってなる。
1行空けてないコードは、びっしり文字が書いてある辞書だと思ってもらえばいい。最初から最後まで読みたいと思わないだろ?
3, なぜそのコードを書いたかをコメントする
なぜそのコードを書いたか?をコメントするといい。「もっとこう書けばいいのになんでこんなコード処理にしたんだろ?」って思うときがかならずくるから。
他人のコードだけじゃなく、とうぜんあなた自身で書いたコードもだ。
みたいに。なぜそのコードを書いたか?っていうコメントを書くといい。
4, どんなコード処理なのかを簡潔にコメントする
ちょっと考えないとわからないようなコードは、コメントを書くことで一瞬で理解できる。他人からもあなた自身からも。
たとえば、つぎのコード。「' ネットワークフォルダに対応するための処理をする」みたいにすれば一瞬で理解できる。
Sub multipleLayersMkDir(ByVal output_folder_path As String) Dim file_system As New FileSystemObject Dim folder_lists As Variant Dim i As Long Dim folder_path As String folder_lists = Split(output_folder_path, "\") For i = LBound(folder_lists) To UBound(folder_lists) folder_path = folder_path + folder_lists(i) & "\" ' ネットワークフォルダに対応するための処理をする If folder_path = "\" Then folder_path = folder_path ElseIf folder_path = "\\" Then i = i + 1 folder_path = folder_path + folder_lists(i) & "\" ElseIf file_system.FolderExists(folder_path) = False Then MkDir folder_path End If Next i End Sub
5, ムダなコメントを書かない
コメントは書けばいいってもんじゃないんだ。それこそコード書くたびにそのコードの説明とかいちいちいらん。
たとえばつぎのコメントはムダの典型。コードを見れば分かること。
' ここからif文 Dim is_name As Boolean ' is_nameがTrueだったら処理する If is_name = True Then End If ' ここからfor文で繰り返し処理 Dim i As Long ' iを1から10まで処理する For i = 1 To 10 Next i
まとめ: コメントは重要。でも使いどき間違えないでね。
- 最初に'----の点線で区切る
- コメントの前に1行空ける
- なぜそのコードを書いたかをコメントする
- どんなコード処理なのかを簡潔にコメントする
- ムダなコメントを書かない
ちなみに、コメントを書くことは重要。他の人がみたとき短時間でパッと理解できるとかメリットはけっこうある。でもなんでも書けばいいってもんじゃない。
今回話したことがちゃんと腑に落ちるようになるには、リーダブルコードを読んでみるといい。
リーダブルコードをAmazonでチェック! https://amzn.to/3o55Dhl