Pythonでコーディング規約は守ったほうがいいの?
エンジニアならコーディング規約については、耳にしたことがあると思いますが、しっかりとルールを守っている方は以外と少ないのではないでしょうか?
筆者もエンジニアデビューして個人で開発をしていたときは、コーディング規約についてはなんとなくわかっていただけで、しっかりと厳守しているわけではありませんでした…。
しかし、チームで開発する場合はコーディング規約を守ることは基本中の基本となります。
ここでは、コーディング規約についてよくわかっていない方に向けて、
- なぜコーディング規約が必要なのか?
- Pythonのコーディング規約PEP8
について調べてみましたので、ぜひ参考にしてください!
そもそもコーディング規約とは?
コーディング規約は、プログラミングをする上でコードを書くための必要なルールとなります。
変数や関数、クラスの名前のつけ方だったり、特定の処理を禁止したり、プログラムを記述する上でさまざまな必要ルールを定めたものがコーディング規約になります。
特に規模の大きなプロジェクトにおいては、後述するPythonのコーディング規約や、会社が細かく取り決めたルールに則ってコーディングすることが大切になります。
なぜコーディング規約が必要なのか?
なぜ、コーディング規約が大切のでしょうか?
それは、エンジニアがそれぞれ好き勝手にプログラムを記述していたら、保守性や可読性の面で問題が発生してしまうからです。
たとえば、変数名はクラスにhensu_a、hensu_b、ClassA、ClassBなどの名前をつけても、その変数は何なのか?どんなクラスなのかがわかりませんね。
その変数に何が入っているのか、さかのぼって解析していかなければわかりません。開発の現場でこんな効率の悪いことをやっていては、時間がいくらあっても足りません。
そのため、コーディング規約を守ることは一定の品質を担保できることに繋がります。
Pythonのコーディング規約PEP8
ここでは、Pythonのコーディング規約であるPEP8について解説していきます。
PEP8の概要
そもそもPEP8とは何でしょうか? pep8-jaを確認すると、
Python の標準ライブラリに含まれているPythonコードのコーディング規約です。
とあります。
PEP8は、Pythonでコーディングをする上で必要となるガイドラインになります。標準ライブラリとは、Pythonをインストールしたときに標準で使えるライブラリのことで、別途インストールしないで使用できます。
標準ライブラリについては、以下の記事で詳しく解説しています。
PEP8の内容を全て噛み砕いて紹介しきれないので、次項ではPEP8の中からコーディングする際の命名規約を中心に解説していきます。
ちょっと細かすぎるような印象を持たれるかもしれませんが、チームで開発を行う場合は、コーディングのルールをしっかりと守ることが重要になります。
コーディングルールはPEP8の他に、自社に取り決めたルールがあったら、そちらも厳守する必要があります。
このような基本的な部分は最初にしっかりと理解しておかないと、あとで余計な手戻りが発生して、工数を圧迫することにもなりかねませんのでよく理解しておきましょう。
命名規則
関数・変数の名前
- 小文字のみにする
- 必要に応じて単語をアンダースコア( _ )で区切る
- 予約後と衝突した場合はアンダースコアを引数名の後ろに追加する
# 変数名の例 my_name class_ # 関数名の例 def my_function
モジュール名
- 小文字の短い名前にする
- アンダースコアをモジュール名に使って良い
# モジュール名の例 my_module
パッケージ名
- 小文字の短い名前にする
- アンダースコアをモジュール名に使っても良いが非推奨
# パッケージ名の例 mypackage
クラス名
- CapWords方式を使う
# クラス名の例 MyClass
- ※ CapWords方式とは?
命名規則において、最初の1文字を大文字を指定し、次の文字からはキャメルケース(アルファベットで複合の単語を組み合わせる)を用いる方式のことを指します。
例外の名前
- CapWords方式を使う
- 実際のエラーの場合は例外の名前の最後に “Error” を付ける
# 例外名の例 MyTestCaseError
関数やメソッドにわたす引数
- インスタンスメソッドの始めの引数の名前はselfを付ける
- クラスメソッドのはじめの引数の名前はclsを付ける
# インスタンスメソッドの例 def my_method(self, str1, str2): 処理
「self」についてよくわからない方は、以下の記事を参考にしてください。
定数
- 定数は大文字で指定する
- アンダースコアも化
# 定数名の例 MAX_OVERFLOW TOTAL
Pythonについてもっと詳しく知りたい方へ
という方は以下の記事も合わせて参考にしてください。
Pythonについて、
- 特徴やメリット
- できること、できないこと
- 基礎の基礎
- 仕事を会得する方法
- 学習方法
など、初心者に必要な情報が全て情網羅されています。
まとめ
ここでは、コーディング規約の重要性やPythonのコーディング規約について解説しました。
コーディング規約はシステムを開発する上で大切な規約となりますので、今まで特に規約を意識していなかった方は、この機会に自分のプログラムが規約に則っているか確認してみましょう。