Add project coding standards and guidelines for Python (PEP 8)

This commit is contained in:
pseco 2026-02-20 10:50:32 +01:00
parent b662b9a4fa
commit b46297c58f
1 changed files with 71 additions and 0 deletions

71
.github/copilot-instructions.md vendored Normal file
View File

@ -0,0 +1,71 @@
---
applyTo: "**"
---
# Project General Coding Standards (Python - PEP 8)
## Naming Conventions
- Follow PEP 8 naming conventions strictly
- Use `snake_case` for variables, functions, and methods
- Use `PascalCase` for class names
- Use `UPPER_CASE` for constants
- Prefix internal/private attributes with a single underscore (`_`)
- Avoid single-letter variable names unless in very small scopes (e.g., loops)
---
## Code Style & Formatting
- Follow PEP 8 guidelines for formatting
- Use 4 spaces for indentation (never tabs)
- Limit lines to 79 characters when possible (max 88 if using Black)
- Add a blank line between logical sections of code
- Keep imports organized:
1. Standard library
2. Third-party packages
3. Local imports
- Avoid wildcard imports (`from module import *`)
- Remove unused imports and variables
---
## Clean Code Principles
- Write small, focused functions that do **one thing only**
- Prefer functions over long procedural blocks
- Keep functions under ~30 lines when possible
- Use descriptive and meaningful names
- Avoid code duplication (DRY principle)
- Prefer explicit code over implicit behavior
- Avoid deeply nested logic (max 23 levels)
- Use early returns to reduce nesting
- Keep classes focused and cohesive
- Write code that is easy to read and maintain
---
## Function Design
- Always use functions when logic can be reused or isolated
- Add type hints to all function signatures
- Keep functions pure when possible (avoid side effects)
- Document functions using docstrings (PEP 257 style)
Example:
```python
def calculate_average(values: list[float]) -> float:
"""
Calculate the average of a list of numbers.
Args:
values: A list of float numbers.
Returns:
The arithmetic mean of the values.
"""
if not values:
raise ValueError("The values list cannot be empty.")
return sum(values) / len(values)