わかりにくいコードとは?わかりやすいコードとは?
プログラムコードは、文法に沿って記述すればどのような書き方でも動作自体には影響ありません。
しかし!好き勝手に記述すると、後から見返したときや、ほかの人が見たときにプログラムの内容が分かりにくくなってしまいます。
そうならないよう、マクロ界では共通のルール(お作法)で書くことが一般的です。
まずは「悪い記述例」と「良い記述例」をお見せします。
悪い記述例
良い記述例
ポイント解説
先ほどの「悪い記述例」は、どうすればか読みやすいコードになるのでしょうか?1つずつポイント解説します。
読みやすいコードとは
- インデント(字下げ)されている
- 長い行は改行されている
- 重複個所は省略されている
- コメントが残されている
インデント(字下げ) をしよう
まずばこちらを見てください。
行頭の位置がすべて左揃えなので、どこからどこまでが1つのブロックなのかが、ぱっと見て分かりません。これはインデント(字下げ)がされていないからです。
では次にこちらを見てください。
どうですか?見やすいですよね。IF~End Ifで囲まれた1つのブロックが一目瞭然だからわかりやすいのです。このように、インデント(字下げ)の設定は重要です。
- インデント →行にカーソルを置き「Tabキー」
- 複数行インデント →「複数行選択してTabキー」
- もとに戻すとき →「Shift+Tabキー」
長い行は改行しよう
こちらを見てください。
ちょっと伝わりづらいですが、1つの文章としてはけっこう長いです。このような長い文章は途中で改行しましょう。
こちらが改行された状態です。
コンパクトになりましたね。今回の例は比較的マシな方かもしれませんが、もっと長い行もあると思いますので、その時は改行して見やすいコードにしましょう。
長いままでも動作に影響はないのですが、文章を左から右へ追う動作を減らせると可読性が高まります。
なお、半角空白と「_」アンダーバーを行の途中に挿入すれば、改行できます。
行を分割できるのは「.」や「,」「=」の前後です。例えば「Range(”A1”)」のコードで「Ra」「nge(”A1”)」のように分割はできません。
重複個所は省略しよう
コードを書いていると何度も同じ語句が登場することがあります。
同じ語句を何度も書いていると、コードが見づらいうえに間違いの原因にもなるので「With」ステートメントを使って、重複個所を省略しましょう。
こちらを見てください。
それぞれの行頭に「 ActiveSheet 」という語句が並んでいます。このような場合、EndとWithで囲うことで省略できます。
こちらが省略後の状態です。
何度も同じ語句を登場させることなく見やすいコードになりました。
書き方としては、「With␣重複語句」~ 「End Wtih」で文章全体を囲い、省略する箇所は「.(ピリオド)」から入力します。
省略できるのは文の主語にあたる箇所のみです。例えば、「ActiveSheet.Range("A1").Select」の「Range(”A1”)」を省略し、「ActiveSheet..Select」とすることはできません。
コメント挿入
「コメント」とは、コードの説明文(メモのようなもの)です。
コードと一緒にコメントを記述しておけば、後から見返したときにすぐにコードの意味が理解できるので便利です。
自分が作成したコードを他人が見たときにも理解できますし、もし自分が作ったコードの意味を忘れてしまっても思い出すことができます。
コメントはどこにでも記述でき、マクロ実行時には無視されるので動作には影響しません。
下図のグレー文字がコメントにあたります。
省略できるのは文の主語にあたる箇所のみです。例えば、「ActiveSheet.Range("A1").Select」の「Range(”A1”)」を省略し、「ActiveSheet..Select」とすることはできません。
まとめ
最後に簡単にまとめましょう。
- 分かりやすいコードを書くポイントは4つ
- インデント(字下げ)をして、1つのブロック単位を明確にする
- 長い行は改行してコンパクトに
- 重複語句はWithステートメントでまとめよう
- メモ代わりにコメントを残そう