Home » いちばんやさしいExcel VBAの教本 » 変数名のつけ方-1行が長くなり過ぎないように

変数名のつけ方-1行が長くなり過ぎないように

拙著『いちばんやさしいExcel VBAの教本』などでExcel VBAの学習を始め、If文やFor~Next文を書けるようになった方の多くが、
「変数名をどうつければいいのだろうか」
「自分の変数名のつけ方は正しいのだろうか」
という疑問を持つはずです。

[スポンサードリンク]

名前をどうつけるかという素晴らしい疑問はずっと続く

まずお伝えしておきたいのは、名前のつけ方に疑問を持つことは素晴らしいということです。

プログラミングを行っていれば、変数名に限らず、名前のつけ方にずっと疑問を持ち続けることになります。

むしろ、プログラミングの学習を継続し成長を続ける限り、名前をどうつけるかという疑問を持たなくなる日は、おそらく来ないのではないかと思います。

この本にこう書いてあったから、あの人がこう言っていたから、というだけで名前のつけ方に一切の疑問も持たない方は、プログラミングに実は向いていない可能性が高いのではないかと、私は考えています。

(プログラムではない)一般的な文章を書くことを継続し、少しでもイイ文章を書こうとし続ける限り
「俺様は世界一素晴らしい文章を書けるようになった! 俺様の文章がこれ以上良くなることは、もう絶対にあり得ないぜ!」
などと思う日は(おそらく)決して来ないことと、かなり近いと考えています。

Excel VBAならば、変数名をどうするか、プロシージャ名をどうするかに始まり、プロシージャで定義する仮引数の名前をどうするか、モジュールの名前をどうするか、と名前にまつわる疑問は、つづきます。

ローカル変数の名前を決めるときに意識していること

変数名をどうつけるかという課題に対し、さまざまな意見がありますが、当たり前すぎるためでしょうか、あまり見かけた記憶のないことで、私が意識していることから書いておきます。

ローカル変数の場合「1行が読みづらくならない程度の長さにする」という基準です。

変数名が長いために読み辛くなっているサンプル

実例を上げましょう。
以下のコードを見て、読みやすいかと感じるかです。
  Dim counter_variable_for_loop As Long
  For counter_variable_for_loop = 1 To 10
   MsgBox counter_variable_for_loop * 100
  Next counter_variable_for_loop

変数名は具体的にわかりやすくしましょうと、よく言われる基準に合致した変数名「counter_variable_for_loop」にしました。

拙著のChapter 7「ループ処理について学ぼう」まで学習した方なら、むしろ、
  Dim i As Long
  For i = 1 To 10
   MsgBox i * 100
  Next i
のほうが、読みやすいと感じるはずです。

「i」という1文字の変数に抵抗がある方でも、例えばLoopの省略形「lp」にした、
  Dim lp As Long
  For lp = 1 To 10
   MsgBox lp * 100
  Next lp
や、
あるいはCounterの省略形「cnt」にした、
  Dim cnt As Long
  For cnt = 1 To 10
   MsgBox cnt * 100
  Next cnt
のほうが、読みやすいと感じるはずです。

変数名が長くなると1行は長くなり読み辛くなる

通常の文章でも1つの文あるいは1行が長くなると、読み辛く意味がわかりにくくなります。

プログラムでも同じです。
だからこそ、ほとんどのコーディング規約が、1行の文字数について規定しているのです。

ローカル変数の名前が長くなれば、1つの文(ステートメント)や1行は、必ず長くなります。

ですからローカル変数の名前を決めるときには、1行が読みづらくならない程度の長さにするという基準を私は持っています。

じゃあそれは何文字なのだという話は、また別の記事で。

最終更新日時:2019-02-12 18:29

[スポンサードリンク]

Home » いちばんやさしいExcel VBAの教本 » 変数名のつけ方-1行が長くなり過ぎないように

TrackBack:0

TrackBack URL

Home » いちばんやさしいExcel VBAの教本 » 変数名のつけ方-1行が長くなり過ぎないように

「いちばんやさしいExcel VBAの教本」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.