2.9 KiB
2.9 KiB
name, description
| name | description |
|---|---|
| codebase-patterns | Common codebase patterns, anti-patterns, and architectural conventions. Auto-loaded when analyzing code structure or discussing architecture. |
Common Codebase Patterns
Architecture Patterns
MVC (Model-View-Controller)
- Models: Data and business logic
- Views: UI/presentation layer
- Controllers: Handle requests, coordinate models/views
- Common in: Rails, Django, Laravel, ASP.NET MVC
Layered Architecture
- Presentation: UI components
- Business Logic: Core application logic
- Data Access: Database interactions
- Common separation:
/controllers,/services,/repositories
Microservices
- Independent services with own databases
- Communication via REST/gRPC/message queues
- Look for: Docker, Kubernetes configs, service directories
Repository Pattern
/repositories
- UserRepository.ts
- ProductRepository.ts
Abstracts data access logic
Service Layer Pattern
/services
- AuthService.ts
- PaymentService.ts
Business logic separation from controllers
Common Anti-Patterns
God Class/Object
- Class with too many responsibilities
- Signs: 500+ lines, handles everything
- Fix: Split into smaller, focused classes
Spaghetti Code
- Complex, tangled dependencies
- Signs: Hard to follow flow, circular dependencies
- Fix: Refactor to clear dependencies
Magic Numbers/Strings
// Bad
if (status === 1) { }
// Good
const STATUS_ACTIVE = 1;
if (status === STATUS_ACTIVE) { }
N+1 Query Problem
# Bad - N+1 queries
for user in users:
user.posts # Separate query for each user
# Good - Single query
users = User.objects.prefetch_related('posts')
File Organization Patterns
Feature-based
/features
/auth
- login.ts
- signup.ts
/dashboard
- dashboard.ts
Layer-based
/controllers
/models
/views
/services
Domain-driven Design
/domain
/user
/order
/payment
Naming Conventions
Functions
- JavaScript/TypeScript:
camelCase-getUserById() - Python:
snake_case-get_user_by_id() - Go:
PascalCasefor exported -GetUserByID()
Classes
- All languages:
PascalCase-UserController,PaymentService
Constants
- All languages:
SCREAMING_SNAKE_CASE-MAX_RETRIES,API_URL
Files
- React:
PascalCase.tsx-UserProfile.tsx - Others:
kebab-caseorsnake_case-user-service.ts
Common Directory Structures
React/Next.js
/app or /pages
/components
/lib or /utils
/hooks
/styles
/public
Express/Node
/routes
/controllers
/models
/middleware
/services
/config
Django
/app_name
/models
/views
/templates
/migrations
Go
/cmd
/internal
/pkg
/api
/configs
Use these patterns to quickly understand and navigate unfamiliar codebases.