【はじめてのPython】リーダブルなコードを書く

ITスキル
  • Pythonを扱うと、コードはより短い方が良いという錯覚に陥りがちです
  • コードの読みやすさを維持することの重要性を理解しておくことで、よりよいコードが書けるようになります
スポンサーリンク

短い=正義?

内包表記

Pythonという言語を扱っていると、Pythonicという言葉を聞くことがあります。
これはPythonらしい書き方という意味で、例えば次のようなコードを指します。

r = [x**2 for x in range(1,10)]

これはいわゆる内包表記と言い、次のような処理と同じことを指しています。

r = []
for i in range(1,10):
    r.append(i**2)

このような表現を見ると、時として、Pythonはより短く書く方がより正しいことであるという錯覚に陥ることがあります。

The Zen of Python

しかしながら、Pythonの精神について書かれたThe Zen of Pythonにおいては、次のように記載されており、必ずしも短いことがいいとは限らないということが分かります。

Beautiful is better than ugly.
醜いより美しいほうがいい。

Explicit is better than implicit.
暗示するより明示するほうがいい。

Simple is better than complex.
複雑であるよりは平易であるほうがいい。

Complex is better than complicated.
それでも、込み入っているよりは複雑であるほうがまし。

Flat is better than nested.
ネストは浅いほうがいい。

Sparse is better than dense.
密集しているよりは隙間があるほうがいい。

Readability counts.
読みやすいことは善である。

Pythonでは、美しいことが何より求められています。
実態面においては、一貫性があることや、より直接的な値を参照しに行くといったことがあげられます。形式面においても、単に短いことではなく、読みやすく、理解しやすいコードであることの方が優先されるべきだという思想に立っています。

美しいことの価値

では、読みやすく美しいと何がいいのかというと、それはデバッグや手直しがしやすいことです。

一般に、デバッグは、コーディングの3倍の力量が必要とされています。
なので、そもそも難しいややこしいコードは、自らデバッグすることができません。

また、他人がコードを見たときに手直ししやすいものを作っておくことで、保守がしやすくなるというメリットも上げられます。

美しいコードを書くために

わかりやすい変数名にする

では、コードを美しくするために、何をするべきか。
世の中にはリーダブルなコードを書くための様々な手法が用意されていますが、まず意識するべきは変数名をわかりやすくすることです。

bufやtmpなどの汎用的な名前は、何を指しているかわかりません。
list_squareや、list_sumなどという名称になっていれば、何らかの乗数や合計数などのリストであることは明白です。
こうすることで、余計なコメントを減らし、読みやすさを担保することができます。

また、変数名を長くすると、コーディングが大変ということも考えられますが、そういう場合は、補完機能を用いることで解決することができます。
IDEにもよりますが、補完機能をつけることで、途中まで記載した段階で変数名の候補が出るので、長い名前を打ち込むこと必要はなくなります。

ちなみに、名前の長さは、その変数が活用される期間に比例するとよいと考えられています。
その場限りの変数は短い名前で、長く使う可能性のある変数は長い名前を付けてわかりやすく、といった形で使い分けるのも有用です。

的確なコメントをつける

とはいえ、変数名をわかりやすくするだけでは、すべてを表現しきることはできません。
そこで、適切なコメントをつけることが重要です。

ただ、「#numに1を足す」といったコメントをつけるのは極めてナンセンスです。
コードを記載している内容をそのままコメントするのではなく、なぜこの場面でnumに1を足すのかを明確にするべきです。

それがイテレーターなら、1飛ばすことで何を得ることができるのか、どのような問題に対処しようとしているのかを明確にコメントすることで、読み手に何をしたいのかを伝えることができます。

ネストを浅くする

また、ネストを浅くすることも、非常に重要です。
if文やfor文は、便利な一方で、読み手にとっては何度も行き来しなければならず非常に面倒です。
for文からの抜け出しの判定などを早めに持ってくることで、必要以上にネストしなくていいように工夫するというのも、リーダブルなコードを書く上では重要です。

最後に

ほかにも、リーダブルなコードを書く方法については、一つ一つ解説していくときりがないほどたくさんあります。
今回はその中でも、初心者が特に気を付けるべきポイントを3つ記載してきました。

初心者は特に、コーディングができるようになってくると、気持ちが乗ったときに勢いだけでコードを書いてしまうということがよくあります。
そうして書いたコードは、翌日になって「誰がこんなの書いたんだ!」となることが往々にしてあります。リーダブルなコードを書くための一番の方法は、常に冷静であることかもしれません。

コメント

タイトルとURLをコピーしました