Re: ローカル変数で「L」とか「D」の変数名を使うやつ!

コメント欄に書くには長くなりそうだったので、エントリ立ててみた。
ローカル変数で「L」とか「D」の変数名を使うやつ! - Pashango’s Blog

PythonだってUPPERCASEは定数なのは暗黙の了解です(怒られないけどね)、なんでそれをわざわざ使うのかということです。

ここに関する認識の違いですね。では、以下にずらずら書いていきましょう。

Python での定数(的なるもの)

僕が*1 Python で書かれたコードを読む時に、識別子を定数だと認識するには二つ条件があります。

  • UPPERCASE である事
  • モジュールレベルで定義された変数である事

この二つを満した識別子を見つけた時に、僕はそれが定数である事を意図して書かれたコードだと思います。

ローカル変数が UPPERCASE で書かれていたとしても、それは定数を意図したのでは無いであろうと考えますので、
Ruby の定数を引き合いに出すのは違うのじゃないかなと思ったわけですね。

ローカル変数 L について

とはいえ実際に UPPERCASE で書かれたローカル変数を見る事はあまり無いですが、あるとしたら L が一番多いです。
これは PEP8 に理由を求める事ができます。

Names to Avoid

Never use the characters `l' (lowercase letter el), `O' (uppercase
letter oh), or `I' (uppercase letter eye) as single character variable
names.

In some fonts, these characters are indistinguishable from the numerals
one and zero. When tempted to use `l', use `L' instead.

http://www.python.org/dev/peps/pep-0008/

避けるべき名前

「l」 (小文字のエル)、「O」(大文字のオー)、「I」(大文字のアイ)
を1文字の変数名として使わない。

フォントによっては、これらの文字は数字の 1 や 0 と区別できない。
「l」 を使いたくなったら、代わりに「L」を使う。

http://www.oldriver.org/python/pep-0008j.html

と、ここまで書いてきましたが

僕も個人的には、一文字の変数はあんまり使わない方が良いとは思いますね。
特にセンスが無い人*2が使うと、なんだかなーって事になりやすいです。
それなのに使っちゃうのは、僕がダメプログラマだからなのです。


ごめんなさいごめんなさい!

*1:というか PEP8 まま

*2:おれおれ!