Loading...
Loading...
Universal code style guidelines and principles for writing clean, maintainable code in any programming language. Use when writing or reviewing code, refactoring existing code, conducting code reviews, or establishing coding standards. Focuses on abstraction, KISS principles, SOLID principles, and avoiding over-engineering.
npx skill4agent add hsiangjenli/skills code-styleguidedef calculate_total_price(items):
total = 0
for item in items:
total += item.price
return totaldef calculate_total_price(items):
return sum(item.price for item in items) if items else 0 or reduce(lambda x, y: x + y.price, items, 0)def process_user_registration():
user_data = validate_input()
user = create_user(user_data)
send_welcome_email(user)
return userdef process_user_registration():
if not email or '@' not in email: # Low-level validation
raise ValueError("Invalid email")
user = User.create(email) # High-level operation
smtp.send(email, "Welcome!") # Medium-level operation# Good: Separate concerns
class User:
def __init__(self, email, password):
self.email = email
self.password = password
class UserValidator:
def validate_email(self, email):
return '@' in email and '.' in email
class EmailService:
def send_welcome_email(self, user):
# Email sending logic# Good: Use abstract base classes
from abc import ABC, abstractmethod
class PaymentProcessor(ABC):
@abstractmethod
def process_payment(self, amount):
pass
class CreditCardProcessor(PaymentProcessor):
def process_payment(self, amount):
# Credit card processing logic
class PayPalProcessor(PaymentProcessor):
def process_payment(self, amount):
# PayPal processing logicclass ConfigManager:
def __init__(self, config_file):
with open(config_file) as f:
self.config = json.load(f)
def get(self, key):
return self.config.get(key)class AbstractConfigurationStrategy(ABC):
@abstractmethod
def load_configuration(self): pass
class JSONConfigurationStrategy(AbstractConfigurationStrategy):
# ... complex factory pattern implementation
class ConfigurationManager:
def __init__(self, strategy: AbstractConfigurationStrategy):
self.strategy = strategy
# ... unnecessary abstractions for a simple config readerdef calculate_discount(price: float, customer_type: str) -> float:
"""Calculate discount based on customer type.
Args:
price: Original price
customer_type: One of 'regular', 'premium', 'vip'
Returns:
Discounted price
"""
discounts = {'regular': 0, 'premium': 0.1, 'vip': 0.2}
return price * (1 - discounts.get(customer_type, 0))user_count = len(users)
is_valid_email = validate_email(email)
for user_index in range(user_count):uc = len(u)
flag = check(e)
for i in range(uc):is_has_can_def process_order(order):
if not order.is_valid():
return None
if not order.has_payment():
return None
return fulfill_order(order)def process_order(order):
if order.is_valid():
if order.has_payment():
# deep nesting continues...
return fulfill_order(order)
else:
return None
else:
return None# Good: Specific and clear
class InvalidEmailError(ValueError):
def __init__(self, email):
super().__init__(f"Invalid email format: {email}")
def validate_email(email):
if '@' not in email:
raise InvalidEmailError(email)# Retry up to 3 times to handle transient network issues
def fetch_user_data(user_id, max_retries=3):# Increment counter by 1
counter += 1# Bad: Don't do this
# ✅ Success! This function works!
# 🚀 Super fast implementation
# ⚠️ Warning: Check this
# Good: Clear, professional comments
# Returns None if validation fails
# Optimized for large datasets
# Validates input before processingdef test_should_reject_user_with_invalid_email():
invalid_email = "not-an-email"
with pytest.raises(InvalidEmailError):
create_user(email=invalid_email)project/
├── src/
│ ├── main.py # Main code
│ └── utils.py # Helper functions
├── tests/
│ └── test_main.py # Tests
└── README.md # One README onlyproject/
├── src/
│ ├── main.py
│ └── utils.py
├── docs/
│ ├── CHANGES.md # Unnecessary
│ ├── SUMMARY.md # Unnecessary
│ └── API_GUIDE.md # Unnecessary
├── README.md
└── NOTES.md # Unnecessary