google-site-verification: google3bd66dd162ef54c7.html
FC2ブログ

Arduino よもやま話 -2 (変数の命名方法)

1.まえがき
 Arduino よもやま話の2回目、今回は変数名の話です。プログラムを書くためには、変数の名前を決める必要があります。役割が一目で判る良い変数名を付けることが出来れば、コーディングがはかどります。一方で、ちょっと違うなーという感じの名前だと、それが気になって、なかなかプログラムを書き進むことが出来なくなったりします。

 ということで、変数名はとても重要です。

2.変数名の決め方
 変数名の決め方については、Arduinoのコーディングルールと命名規則を調べてみたに書かれている内容が網羅的に情報をカバーされているのでとても参考になります。いろいろな流儀があるようですが、私はロワーキャメルケースを使っています。スネークケースの例も以下に示します。
例) ロワーキャメルケース: sunRiseTime ←私はこれ派
   スネークケース:sun_rise_time

 英単語を二つつ三つ使って、その関数の役割を簡潔に表現するのがポイントです。

 あと、1文字だけの短い変数名は使わないことが推奨されています。でも、1文字変数を使った方が判り易くな場合もあるので一概にダメでも無いと思います。例えば下記、これは日の出日の入り時刻を計算した時に作った関数です。
float eCalc(int n) {                           // 近似式で均時差を求める
float e, w;
w = (n + 0.5) * 2 * M_PI / 365; // 日付をラジアンに換算
e = + 0.0072 * cos(w) - 0.0528 * cos(2 * w) - 0.0012 * cos(3 * w)
- 0.1229 * sin(w) - 0.1565 * sin(2 * w) - 0.0041 * sin(3 * w);
return e; // 均一時差を返す(単位は時)
}
 数式通りに書けているので読み易いと思います。こんなふうに関数の中のローカル変数だったら、1文字変数でも許してもらえるはずです。

3.グローバル変数の書き方
 グローバル変数は、すぐわかるように先頭を大文字で書くという作法があるようです。つまり私の場合、変数名をアッパーキャメルケースで書くことになります。
 アッパーキャメルケース:SunRiseTime ←先頭が大文字になっています

 なるほどこれは良いかも、と思って一度やってみたことがあります。でも Arduino の場合はよろしくないと思いました。というのは、Arduinoではグローバル変数がとても多くなることが多いからです。もちろん関数内だけで閉じている変数はローカル変数を使いますが、その数は意外と少ないです。それに、引数を渡して、結果を戻り値で返すという手順を踏むより、グローバル変数を直接いじった方が手っ取り早いということもあります。(お行儀が悪いですが)

 ともかくそんなことで、プログラムはグローバル変数だらけになったわけですが、変数がアッパーキャメルケースで書いてあると、大文字が目立ってしまって、ソースが読み難くなってしまいました。

 あと、Arduino ではほとんどの場合、一人でプログラムを作るので、変数名の競合なんて心配する必要がありません。それにメモリも小さいので、サイズの大きなプログラムになることはありません。そんなことで、グローバル変数だらけになってしまっても、いいのではないか思います。

4.ハードウエアレジスタ名との衝突
 グローバル変数は全部大文字で書く(アッパーケースで書く)、という作法もあるようです。でもArduinoでは、ハードウエアのレジスタ名がアッパーケースであらかじめ大量に定義されているので、これと衝突する恐れがあります。そんなことで、アッパーケースの変数名は使わない方が良いと思います。それにソースが読み難いです。

5.まとめ
 Arduino のリファレンスには変数名は説明的な名前を付けましょう、と書かれているだけでキャメルケースなどの具体的な表現のテクニックまでは書かれていないようです。初心者に余計なプレッシャーを与えないように気を使っているのだと思いますが、少し上達すると、この記事に書いたようなことも大切になってくるはずです。

 あと、変数名は各々の人でこだわりがあるようなので、組織に属していない人は好きなものを使えば良いのですが、こんな意見もあるよ、という感じでこの記事を読んで頂ければ幸いです。
関連記事

コメントの投稿

管理者にだけ表示を許可する

No title

ラクダと蛇ですか、ネーミングセンスが実にユニークですね。
命名された方を尊敬します。
話変わりますが、他にもU8やS8みたいに_の後に変数タイプを付けたりとか、Charは文字型なのでByte型を使うべきだなど色んな話はありますが、ラジオペンチさんのおっしゃる通り、個人的なものに関しては自由で良いと思います。

老技師さん、こんにちは

ラクダやヘビは無意識に使っていましたが、恥ずかしながらそういう名前であることは、最近まで知りませんでした。

まあ自由にすればいいのでしょうが、知識として知っていた方がいいかな、と思ってこういう記事を書いています。
カレンダー
10 | 2018/11 | 12
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード