より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

Pythonのコーディング規約PEP8について学ぶ

Pythonのコーディング規約のドキュメントとしてPEP8というものが存在します。

はじめに — pep8-ja 1.0 ドキュメント

コーディング規約について学んで見ようかと思います。

まず、大事なのは規約について説明する前に

一貫性にこだわりすぎるのは狭い心の現れでもある

と記述があることでしょう。後方互換性などで規約を崩さざる得ない場合もあると。

コーディングならず、あらゆる規約についてにも言えることかな、と。

ここでは私が気づいたことを記載するメモにとどめます。

きちんと学びたい方は本家のサイトを参照してください。

2項演算子の前で改行すべきか、後で改行すべきか?

# 良い: 演算子とオペランドを一致させやすい
income = (gross_wages
          + taxable_interest
          + (dividends - qualified_dividends))

あんま意識したことありませんが、演算子の前で改行した方が良いですね。

スペースについて

#Bad Case

x             = 1
y             = 2
long_variable = 3

変数の代入の=を揃えたいのはわかります。

だんだん、そういうことにこだわりたくなるのがエンジニアというもの。

ですが、修正するのが大変。

命名規則

ここは、やはりボリュームは多いですね。

  • クラス名は、キャメル(ClassName)
  • 例外もキャメル(ExceptionName)
  • パッケージ名、モジュール名は全て小文字(module_name)
  • 関数や変数名は小文字とアンダースコア(method_name)
  • インスタンス変数もスネークケース(instance_name)
  • 定数は大文字とアンダースコア(CONST_NAME)

単一の文字 'l' (小文字のエル)、'O' (大文字のオー)、'I'(大文字のアイ) を決して変数に使わないでください。

確かにそうですね。どんなプログラミング言語でもそうですね。1と0と見分けつかないので。

プログラミングに関する推奨事項

適切な演算子があるので、それを使えと。

まだPython駆け出しの自分にはそうした演算子があることを知りませんでした。

is not

    if result is not None:
        temp_born.append(int(result.group()))
    else:
        temp_born.append(0)

isinstance

if isinstance('test',str):
    print('it is str')
else:
    print('it is not str')