インデント(字下げ)をして、構造を見やすくする
見比べるとわかりますが、字下げをしていない場合と字下げをしている場合で、プログラム構造のわかりやすさがまったく違います。
字下げをしてもしなくてもプログラムの動作は変わりませんが、見やすくメンテ性を向上させるためにも字下げをしましょう。
× 字下げなし
for文やIf文の構造がわかりにくい
1 2 3 4 5 6 7 8 |
Dim rowIdx As Long 'チェック対象のセルが空白の時、"未入力"をセットする For rowIdx = 1 To 300 If Cells(rowIdx, 1).Value = "" Then Cells(rowIdx, 1).Value = "未入力" End If Next |
○ 字下げあり
for文やIf文の構造がわかりやすい
1 2 3 4 5 6 7 8 |
Dim rowIdx As Long 'チェック対象のセルが空白の時、"未入力"をセットする For rowIdx = 1 To 300 If Cells(rowIdx, 1).Value = "" Then Cells(rowIdx, 1).Value = "未入力" End If Next |
POINT
対象行の先頭にカーソルを合わせ、Tabキーを押すと字下げされます。
複数行を選択(ドラッグ)しTabキーを押すことで、まとめて字下げができます。
Shiftキー + Tabキーで、逆に字上げできます。
対象行の先頭にカーソルを合わせ、Tabキーを押すと字下げされます。
複数行を選択(ドラッグ)しTabキーを押すことで、まとめて字下げができます。
Shiftキー + Tabキーで、逆に字上げできます。
入れ子構造が深くならないようにする
If文などで、入れ子でどんどん深くなると何をプログラムをしているのかわかりにくく、またメンテナンス性も落ちます。
多少プログラムが長くなってもいいので、処理を分割して、あまり入れ子が深くならないようにしましょう。
ファイル名を入力するテキストボックスに対して、3つのチェック(未入力チェック、ファイル存在チェック、拡張子チェック)をするサンプルプログラムです。見比べてみてください。
× 入れ子が深い
見にくく、修正がしにくい
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
'---------------------------------------- '取込ファイルテキストボックスのチェック '---------------------------------------- '未入力チェック If txtTorikomiFile.Text = "" Then Exit Function Else 'ファイル存在チェック If Dir(txtTorikomiFile.Text) = "" Then Exit Function Else '拡張子チェック (エクセルファイルのみ) If Right(txtTorikomiFile.Text, 4) <> "xlsx" Then Exit Function End If End If End If |
○ 入れ子浅い
各処理で分割しているので、見やすく、修正やコメントアウトを個別にしやすい
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
'---------------------------------------- '取込ファイルテキストボックスのチェック '---------------------------------------- '未入力チェック If txtTorikomiFile.Text = "" Then Exit Function End If 'ファイル存在チェック If Dir(txtTorikomiFile.Text) = "" Then Exit Function End If '拡張子チェック (エクセルファイルのみ) If Right(txtTorikomiFile.Text, 4) <> "xlsx" Then Exit Function End If |
Withステートメントを使う
Withステートメントを使うことで、オブジェクト名の記述は1回のみで、プログラムの可読性が向上します。
× With未使用
1 2 3 4 |
Range("A1").Font.Name = "MS Pゴシック" Range("A1").Font.Bold = True Range("A1").Font.Size = 20 Range("A1").Font.Color = vbBlue |
○ With使用
1 2 3 4 5 6 |
With Range("A1").Font .Name = "MS Pゴシック" .Bold = True .Size = 20 .Color = vbBlue End With |
※ただし、長い範囲でのWith句や、With句の入れ子は、対象のオブジェクトが何かわかりにくくなってしまうので注意しましょう。
GoToステートメントはできるだけ使用しない
Gotoステートメントが色々な場所にあると、処理が飛ぶのでプログラムの可読性が落ちます。
できる限りGotoステートメントを使わない構造を考えましょう。
コメントは意図を簡潔に記述する
「変数SyoriMode=1の時、実行する」などプログラムを読めばわかるコメントは不要です。
プログラムを読んでもわからない意図や仕様を簡潔にコメントしましょう。
そうすることで、全体的なコメント量は減りますが、逆にコメントの重みも増します。
※コメント不要という意味ではありません。
「プログラムを読めばわかる。わからないのは技術不足」と言って、コメントを全然記述しない人がいますが、それは少し違うと思います。
他の人や初心者の人でも読みやすい、「優しさ」のあるプログラム、コメントを心がけましょう。
「プログラムを読めばわかる。わからないのは技術不足」と言って、コメントを全然記述しない人がいますが、それは少し違うと思います。
他の人や初心者の人でも読みやすい、「優しさ」のあるプログラム、コメントを心がけましょう。