-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathone-class-per-file.mdc
More file actions
76 lines (60 loc) · 1.66 KB
/
Copy pathone-class-per-file.mdc
File metadata and controls
76 lines (60 loc) · 1.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
---
description:
globs:
alwaysApply: true
---
# One Class Per File
Each Python file should contain exactly one class, and the file name should follow the class name convention.
## File Naming Rules
1. For regular classes:
- Use PascalCase (camelCase with first letter capitalized)
- File name must match the class name exactly
- Example: `Genre.py` for `class Genre`
2. For serializer classes:
- Use concise camelCase
- File name should be shorter than the class name
- Example: `genre.py` for `class GenreSerializer`
## Examples
Good examples:
```
# Genre.py
class Genre(models.Model):
name = models.CharField(max_length=100)
uuid = models.UUIDField()
# genre.py
class GenreSerializer(serializers.ModelSerializer):
class Meta:
model = Genre
fields = [Fields.NAME, Fields.UUID]
# GenreTree.py
class GenreTree:
def __init__(self, root: Genre):
self.root = root
```
Bad examples:
```
# genre_model.py (Bad - should be Genre.py)
class Genre(models.Model):
pass
# GenreSerializer.py (Bad - should be genre.py)
class GenreSerializer(serializers.ModelSerializer):
pass
# models.py (Bad - contains multiple classes)
class Genre(models.Model):
pass
class Artist(models.Model):
pass
```
## Guidelines
1. Each file must contain exactly one class
2. File name must match the class name convention
3. Keep related classes in the same directory
4. Use `__init__.py` to expose classes
5. Follow the naming convention consistently across the project
## Benefits
- Improves code organization
- Makes files easier to find
- Simplifies version control
- Makes refactoring easier
- Improves code readability
- Makes imports clearer