| name | python-refactoring |
| description | Python refactoring triggers and guidelines for code size limits |
| license | MIT |
| compatibility | opencode |
| metadata | {"related_coding_principles":"For general coding principles, use skill `coding-principles`","related_python_guidelines":"For style and quality standards, use skill `python-guidelines`"} |
Python Refactoring Triggers
What I Do
Provide guidelines for when to refactor Python code based on size limits and complexity thresholds.
Size Limits
Module Size (>250 lines)
Function Size (>75 lines)
def process_data(data):
validate(data)
transform(data)
clean(data)
aggregate(data)
export(data)
def process_data(data):
validate(data)
transformed = transform_data(data)
cleaned = clean_data(transformed)
results = aggregate_data(cleaned)
export_results(results)
def transform_data(data):
pass
def clean_data(data):
pass
Class Size (>200 lines)
class DataProcessor:
def validate(self): ...
def parse(self): ...
def transform(self): ...
def export(self): ...
def log(self): ...
def cache(self): ...
class DataProcessor:
def __init__(self, validator, parser, transformer, exporter):
self.validator = validator
self.parser = parser
self.transformer = transformer
self.exporter = exporter
def process(self, data):
validated = self.validator.validate(data)
parsed = self.parser.parse(validated)
return self.transformer.transform(parsed)
Refactoring Principles
Single Responsibility
class UserService:
def authenticate(self): ...
def send_email(self): ...
def cache_data(self): ...
def generate_report(self): ...
class AuthService: ...
class EmailService: ...
class CacheService: ...
class ReportService: ...
Composition over Inheritance
class DataProcessor:
def __init__(self, validator, parser, transformer):
self.validator = validator
self.parser = parser
self.transformer = transformer
When to Use Me
Use this skill when:
- Code exceeds size thresholds
- Classes have too many methods
- Functions are too complex
- Refactoring decisions needed
Key Rules
- Modules > 250 lines - Split into multiple modules
- Functions > 75 lines - Decompose into smaller functions
- Classes > 200 lines - Apply SRP, consider composition
- Too many methods - Split into smaller classes
- Too many dependencies - Use dependency injection