「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python のベスト プラクティス: クリーンで効率的で保守可能なコードを作成する

Python のベスト プラクティス: クリーンで効率的で保守可能なコードを作成する

2024 年 11 月 6 日に公開
ブラウズ:248

Python Best Practices: Writing Clean, Efficient, and Maintainable Code

Python は、そのシンプルさ、読みやすさ、多用途性により、最も人気のあるプログラミング言語の 1 つです。

経験豊富な開発者でも初心者でも、クリーンで効率的で保守しやすいコードを作成するには、Python のベスト プラクティスに従うことが重要です。

このブログ投稿では、Python コードを作成する際に留意すべき主要なベスト プラクティスのいくつかを検討します。


1 - PEP 8 ガイドラインを遵守する

PEP 8 は Python コードのスタイル ガイドであり、コードの書式設定と構造化に関する規則を提供します。

PEP 8 の重要なポイントは次のとおりです:

  • インデント: インデント レベルごとに 4 つのスペースを使用します。
  • 行の長さ: すべての行を最大 79 文字に制限します。
  • 空白行: トップレベルの関数とクラスの定義は 2 つの空白行で区切られ、クラス内のメソッド定義は 1 つの空白行で区切られます。
  • インポート: インポートをファイルの先頭に配置し、標準ライブラリのインポート、関連するサードパーティのインポート、ローカル アプリケーション/ライブラリ固有のインポートの順序でグループ化します。

PEP 8 に準拠すると、コードが読みやすくなり、他の Python コードベースとの一貫性が高まります。


2 - 説明的で簡潔な変数名を書く

説明的でありながら簡潔な変数名を選択してください。

ループカウンターなどの場合を除き、1 文字の変数は避けてください。
例えば:

# Bad
a = 10

# Good
number_of_users = 10

説明的な変数名を使用するとコードが一目瞭然になり、詳細なコメントの必要性が減り、他の人 (そして将来の自分) が理解しやすくなります。


3 - リスト内包表記とジェネレーター式を使用する

リスト内包表記とジェネレーター式は、リストとジェネレーターを作成するための簡潔な方法を提供します。

ループを使用するよりも読みやすく、多くの場合高速です。

# List comprehension
squares = [x**2 for x in range(10)]

# Generator expression
squares_gen = (x**2 for x in range(10))

リスト内包表記は、結果のリストがメモリに収まるほど小さい場合に最適です。

メモリを節約するには、より大きなデータ セットにはジェネレーター式を使用します。


4 - Python の組み込み関数とライブラリを活用する

Python の標準ライブラリは膨大であるため、多くの場合、カスタム コードを記述するよりも組み込み関数を使用する方が適切です。

たとえば、リストの最大値を見つける独自の関数を作成する代わりに、Python の組み込み max() 関数を使用します。

# Bad
def find_max(lst):
    max_val = lst[0]
    for num in lst:
        if num > max_val:
            max_val = num
    return max_val

# Good
max_val = max(lst)


組み込み関数とライブラリを使用すると、時間を節約し、エラーの可能性を減らすことができます。


5 - DRY 原則に従う (同じことを繰り返さない)

コードの重複を避けてください。

同じコードを複数回記述する場合は、それを関数またはクラスにリファクタリングすることを検討してください。

これにより、コードベースのサイズが削減されるだけでなく、保守も容易になります。

# Bad
def print_user_details(name, age):
    print(f"Name: {name}")
    print(f"Age: {age}")

def print_product_details(product, price):
    print(f"Product: {product}")
    print(f"Price: {price}")

# Good
def print_details(label, value):
    print(f"{label}: {value}")

DRY 原則により、よりモジュール化された再利用可能なコードが実現します。


6 - 仮想環境を使用する

Python プロジェクトで作業する場合、特に依存関係を伴う場合は、仮想環境を使用するのが最善です。

仮想環境を使用すると、プロジェクトごとに依存関係を管理できるため、異なるプロジェクトで使用されるパッケージ間の競合を回避できます。

# 
Create a virtual environment
python -m venv myenv

# Activate the virtual environment
source myenv/bin/activate  # On Windows: myenv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

仮想環境を使用すると、プロジェクトの依存関係が確実に分離され、簡単に再現可能になります。


7 - 単体テストの作成

テストの作成は、コードが期待どおりに動作することを確認し、変更を加えたときのリグレッションを防ぐために非常に重要です。

Python の Unittest モジュールは、テストを作成するための優れた出発点です。

import unittest

def add(a, b):
    return a   b

class TestMathFunctions(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(2, 3), 5)
        self.assertEqual(add(-1, 1), 0)

if __name__ == '__main__':
    unittest.main()

開発中にテストを定期的に実行することで、コードが堅牢でバグがない状態が保たれます。


8 - 意味のあるコメントとドキュメント文字列を使用する

クリーンなコードは一目瞭然である必要がありますが、コメントとドキュメント文字列は複雑なロジック、仮定、決定を説明するために依然として重要です。

コメントは控えめに使用し、何をしたかではなく、なぜそれを行ったかに重点を置きます。

def calculate_discount(price, discount):
    """
    Calculate the price after applying the discount.

    Args:
    price (float): Original price
    discount (float): Discount percentage (0-100)

    Returns:
    float: Final price after discount
    """
    return price * (1 - discount / 100)

優れたコメントとドキュメント文字列は、コードの保守性と使いやすさを向上させます。


9 - 例外を適切に処理する

Python は、エラーを適切に管理するために使用する必要がある強力な例外処理機能を提供します。

プログラムをクラッシュさせる代わりに、try ブロックと else ブロックを使用して潜在的なエラーを処理します。

try:
    with open('data.txt', 'r') as file:
        data = file.read()
except FileNotFoundError:
    print("File not found. Please check the file path.")
except Exception as e:
    print(f"An unexpected error occurred: {e}")

例外を適切に処理すると、プログラムがクラッシュすることなく予期せぬ状況に対処できるようになります。


10 - コードをモジュール化する

モジュール化されたコードは、理解、テスト、保守が容易です。

コードをより小さな再利用可能な関数とクラスに分割します。

各関数またはクラスは 1 つの責任を持つ必要があります。

# Bad
def process_data(data):
    # Load data
    # Clean data
    # Analyze data
    # Save results

# Good
def load_data(path):
    pass

def clean_data(data):
    pass

def analyze_data(data):
    pass

def save_results(results):
    pass

モジュール化によりコードの明瞭さと再利用性が向上し、デバッグと拡張が容易になります。


結論

これらの Python のベスト プラクティスに従うことで、クリーンで効率的で保守しやすいコードを作成できます。

小さなスクリプトを書く場合でも、大規模なアプリケーションを開発する場合でも、これらの原則は、より優れた、よりプロフェッショナルな Python コードを作成するのに役立ちます。

コーディングは単に物事を機能させるだけではないことを覚えておいてください。現在も将来もうまく機能するようにすることが重要です。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/devasservice/python-best-practices-writing-clean-efficient-and-maintainable-code-34bj?1 侵害がある場合は、[email protected] までご連絡ください。それを削除するには
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3