LoginSignup
0
1

PEP 8(Python Enhancement Proposal 8)はPythonのコードスタイルガイドで、読みやすく一貫性のあるコードを書くための指針を提供しています。以下に、主要な命名規則と良い変数名の付け方を説明します。

変数名と関数名

変数名と関数名は、小文字のみを使用し、単語間はアンダースコア(_)で区切ります。これをスネークケースと呼びます。

# 良い例
user_name = "Alice"
total_count = 42
calculate_average = lambda x, y: (x + y) / 2

# 悪い例
UserName = "Bob"  # クラス名のような大文字始まりは避ける
totalCount = 100  # キャメルケースは避ける

定数

定数は全て大文字で、単語間はアンダースコアで区切ります。

MAX_CONNECTIONS = 1000
DEFAULT_TIMEOUT = 30
PI = 3.14159

クラス名

クラス名はキャメルケース(各単語の先頭を大文字)を使用します。

class UserProfile:
    pass

class DatabaseConnection:
    pass

メソッド名

メソッド名は関数名と同じく、スネークケースを使用します。

class Car:
    def start_engine(self):
        pass
    
    def apply_brakes(self):
        pass

プライベート変数やメソッド

クラス内でのみ使用する予定の変数やメソッドは、名前の前にアンダースコアを1つ付けます。

class BankAccount:
    def __init__(self):
        self._balance = 0  # プライベート変数
    
    def _update_balance(self):  # プライベートメソッド
        pass

特殊メソッド(マジックメソッド)

特殊メソッドは前後にダブルアンダースコアを付けます。

class CustomList:
    def __init__(self):
        self.data = []
    
    def __len__(self):
        return len(self.data)

良い変数名の付け方

変数名は短すぎず、長すぎず、その変数の役割を明確に表すものが良いです。

# 良い例
user_age = 25
is_active = True
items_count = len(items)

# 悪い例
a = 25  # 意味が不明確
is_it_active_or_not = True  # 長すぎる
cnt = len(items)  # 略語は避ける

イテレータ変数

短いループでは、i, j, kなどの単一文字の変数名を使用することも一般的ですが、長いループや複雑な処理では、より意味のある名前を使用します。

# 短いループの例
for i in range(3):
    print(i)

# 長いループや複雑な処理の例
for user in active_users:
    process_user_data(user)

ブール変数

ブール変数には、is_, has_, can_などのプレフィックスをつけると、その変数が真偽値を表していることが明確になります。

is_logged_in = True
has_permission = False
can_edit = check_user_rights(user)

これらの規則に従うことで、コードの可読性が向上し、他の開発者(将来の自分も含めて)がコードを理解しやすくなります。

最後に、実際のコード例を見てみましょう。

class LibraryBook:
    MAX_CHECKOUT_DAYS = 14

    def __init__(self, title, author):
        self.title = title
        self.author = author
        self._is_checked_out = False
        self._checkout_date = None

    def check_out(self):
        if not self._is_checked_out:
            self._is_checked_out = True
            self._checkout_date = self._get_current_date()
            return True
        return False

    def return_book(self):
        if self._is_checked_out:
            self._is_checked_out = False
            self._checkout_date = None
            return True
        return False

    def _get_current_date(self):
        # 実際の実装ではdatetimeモジュールを使用するでしょう
        pass

    def is_overdue(self):
        if not self._is_checked_out:
            return False
        days_checked_out = self._calculate_days_checked_out()
        return days_checked_out > self.MAX_CHECKOUT_DAYS

    def _calculate_days_checked_out(self):
        # 実際の実装では日付の差分を計算するでしょう
        pass

このコード例では、PEP 8に準拠した命名規則を使用しています。クラス名、メソッド名、変数名がそれぞれの規則に従っており、各名前からその役割が推測できるようになっています。
これらの規則を意識しながらコードを書くことで、より読みやすく、メンテナンスしやすいPythonプログラムを作成することができます。

参考) 東京工業大学情報理工学院 Python早見表

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1