ラベル 可読性 の投稿を表示しています。 すべての投稿を表示
ラベル 可読性 の投稿を表示しています。 すべての投稿を表示

2015年12月18日

変数命名

Python に限らずプログラミング全般において、変数等の命名を規則化することは、ソースコードの統一と可読性の向上に役立ちます。

変数命名則には色々な流派があり、それが原因で喧嘩になることも多いのですが、幸い Python は PEP8 で変数の命名則が定められています。
Google Python Style Guideにて、これに準拠した表がありましたので、以下に引用します。

TypePublicInternal
Packageslower_with_under
Moduleslower_with_under_lower_with_under
ClassesCapWords_CapWords
ExceptionsCapWords
Functionslower_with_under()_lower_with_under()
Global/Class ConstantsCAPS_WITH_UNDER_CAPS_WITH_UNDER
Global/Class Variableslower_with_under_lower_with_under
Instance Variableslower_with_under_lower_with_under (protected) or __lower_with_under (private)
Method Nameslower_with_under()_lower_with_under() (protected) or __lower_with_under() (private)
Function/Method Parameterslower_with_under
Local Variableslower_with_under

PEP8 で定められているということもあり、Python での変数命名則は基本的には上の表に従えば良いはずです。
他のプログラム言語の一般的な命名則と比べて、それほど奇をてらった内容ではないと思います。Python ならではと言えるのは、Internal の時は先頭に _ を付ける点くらいでしょうか。

多く定義することになる Functions、Instance Variables、Method Names、Local Variables に lower_with_under を使う点は、普段別の書式を使っている人には少々取っつきにくく感じるかもしれません(他の書式として lowerCamelCase をよく見かけます)。とは言え、これは完全に慣れの問題と思います。

2015年12月2日

内包表記の話3

内包表記の可読性について考えてみます。


一般に内包表記は for文で書くよりも短い記述で済み、また動作速度も速いです。
これらは非常に大きな恩恵なのですが、他方で可読性について考慮すると、いつでも内包表記の方が良いとは限りません。

元々内包表記は、
[値 繰り返し 条件文]
というやや特殊な並びの記述です。慣れの問題が大きいのですが、Python ベッタリではない人にとってはこの表記はなかなか馴染めないようです。

それよりも、内包表記が入れ子になっていたり、記述があまりにも長い場合には、可読性の観点から内包表記を断念した方が良いようになります。
以下は読みにくい内包表記の例です。

# 九九のリストを作成。
# 内包表記が入れ子なので読みにくい
>>> qq = [[i * j for i in range(1, 10)] for j in range(1, 10)]
>>> qq
[[1, 2, 3, 4, 5, 6, 7, 8, 9],
 [2, 4, 6, 8, 10, 12, 14, 16, 18],
 ...
 [9, 18, 27, 36, 45, 54, 63, 72, 81]]

# 条件に合うファイル名を取得。
# 複数の処理が詰め込まれていて読みにくい
>>> filelist = ['img/a.jpg', 'img/b.jpeg', 'img/c.png']
>>> [os.path.basename(f) for f in filelist if os.path.isfile(f) and f.endswith(('.jpg', '.jpeg'))]
['a.jpg', 'b.jpeg']


以下の2つの条件を満たしている時のみ内包表記を書くべきだと私は考えています。あくまで私見ですが、、、。
  • 入れ子になっていないこと
  • 1行で書き切れること