56 lines
2.4 KiB
Markdown
56 lines
2.4 KiB
Markdown
---
|
||
description: 'Pythonコーディング規約とガイドライン'
|
||
applyTo: '**/*.py'
|
||
---
|
||
|
||
# Pythonコーディング規約
|
||
|
||
## Python指針
|
||
|
||
- 各関数に対して明確で簡潔なコメントを記述する。
|
||
- 関数には説明的な名前を付け、型ヒントを含める。
|
||
- PEP 257の規約に従ったdocstringを提供する。
|
||
- 型注釈には`typing`モジュールを使用する(例:`List[str]`、`Dict[str, int]`)。
|
||
- 複雑な関数は、より小さく管理しやすい関数に分割する。
|
||
|
||
## 全般指針
|
||
|
||
- 常に可読性と明確性を優先する。
|
||
- アルゴリズム関連のコードでは、使用したアプローチの説明を含める。
|
||
- 保守性の高い実践に沿ってコードを記述し、なぜその設計決定をしたのかの理由をコメントに含める。
|
||
- エッジケースを処理し、明確な例外処理を記述する。
|
||
- ライブラリや外部依存関係については、その使用方法と目的をコメントで説明する。
|
||
- 一貫した命名規則を使用し、言語固有のベストプラクティスに従う。
|
||
- 理解しやすく、簡潔で効率的、かつ慣用的なコードを記述する。
|
||
|
||
## コードスタイルと書式
|
||
|
||
- Pythonの**PEP 8**スタイルガイドに従う。
|
||
- 適切なインデントを維持する(各インデントレベルで4スペースを使用)。
|
||
- 行の長さが79文字を超えないようにする。
|
||
- 関数とクラスのdocstringは`def`または`class`キーワードの直後に配置する。
|
||
- 適切な箇所で空行を使用して関数、クラス、コードブロックを分離する。
|
||
|
||
## エッジケースとテスト
|
||
|
||
- アプリケーションの重要なパスには必ずテストケースを含める。
|
||
- 空の入力、無効なデータ型、大規模なデータセットなどの一般的なエッジケースを考慮する。
|
||
- エッジケースとそれらのケースで期待される動作についてコメントを含める。
|
||
- 関数の単体テストを記述し、テストケースを説明するdocstringで文書化する。
|
||
|
||
## 適切な文書化の例
|
||
|
||
```python
|
||
def calculate_area(radius: float) -> float:
|
||
"""
|
||
半径を指定して円の面積を計算する。
|
||
|
||
Parameters:
|
||
radius (float): 円の半径。
|
||
|
||
Returns:
|
||
float: π * radius^2で計算される円の面積。
|
||
"""
|
||
import math
|
||
return math.pi * radius ** 2
|
||
``` |