212 lines
4.8 KiB
Markdown
212 lines
4.8 KiB
Markdown
---
|
|
id: {prefix}-{concept}-{specificity}
|
|
title: {Full Descriptive Title}
|
|
category: {solid-principles|core-principles|design-patterns|code-organization|naming-readability|functions-methods|comments-documentation}
|
|
priority: {critical|high|medium|low}
|
|
tags: [{tag1}, {tag2}, {tag3}, {tag4}]
|
|
related: [{rule-id-1}, {rule-id-2}, {rule-id-3}]
|
|
---
|
|
|
|
# {Rule Title}
|
|
|
|
{One or two sentence summary explaining the principle and why it matters. Should be clear and actionable.}
|
|
|
|
## Bad Example
|
|
|
|
```typescript
|
|
// Anti-pattern: {Brief description of what's wrong}
|
|
|
|
{Code example demonstrating the violation}
|
|
|
|
// Problems:
|
|
// 1. {Specific issue 1}
|
|
// 2. {Specific issue 2}
|
|
// 3. {Specific issue 3}
|
|
```
|
|
|
|
**Why This Is Wrong:**
|
|
- {Consequence 1}
|
|
- {Consequence 2}
|
|
- {Consequence 3}
|
|
|
|
## Good Example
|
|
|
|
```typescript
|
|
// Correct approach: {Brief description of the solution}
|
|
|
|
{Code example demonstrating proper implementation}
|
|
|
|
// Benefits:
|
|
// 1. {Benefit 1}
|
|
// 2. {Benefit 2}
|
|
// 3. {Benefit 3}
|
|
```
|
|
|
|
**Alternative Approach (Optional):**
|
|
|
|
```typescript
|
|
// Another valid solution: {When this might be preferred}
|
|
|
|
{Alternative code example if applicable}
|
|
```
|
|
|
|
## Why
|
|
|
|
Explanation of the principle and its benefits:
|
|
|
|
1. **{Benefit Category 1}**: {Detailed explanation}
|
|
|
|
2. **{Benefit Category 2}**: {Detailed explanation}
|
|
|
|
3. **{Benefit Category 3}**: {Detailed explanation}
|
|
|
|
4. **{Benefit Category 4}**: {Detailed explanation}
|
|
|
|
5. **{Benefit Category 5}**: {Detailed explanation}
|
|
|
|
6. **{Benefit Category 6}**: {Detailed explanation}
|
|
|
|
7. **{Benefit Category 7}**: {Detailed explanation}
|
|
|
|
## When to Apply
|
|
|
|
- {Situation 1}
|
|
- {Situation 2}
|
|
- {Situation 3}
|
|
- {Situation 4}
|
|
|
|
## When NOT to Apply (Optional)
|
|
|
|
```typescript
|
|
// Acceptable exception: {Scenario where the rule can be relaxed}
|
|
|
|
{Code example of acceptable violation with clear reasoning}
|
|
|
|
// This is acceptable because:
|
|
// - {Reason 1}
|
|
// - {Reason 2}
|
|
```
|
|
|
|
## Common Mistakes (Optional)
|
|
|
|
### Mistake 1: {Common misunderstanding}
|
|
|
|
```typescript
|
|
// ❌ Wrong
|
|
{Code showing mistake}
|
|
|
|
// ✅ Correct
|
|
{Code showing correction}
|
|
```
|
|
|
|
### Mistake 2: {Another common issue}
|
|
|
|
```typescript
|
|
// ❌ Wrong
|
|
{Code showing mistake}
|
|
|
|
// ✅ Correct
|
|
{Code showing correction}
|
|
```
|
|
|
|
## Testing Implications (Optional)
|
|
|
|
How this principle affects testing:
|
|
|
|
```typescript
|
|
// Test example showing improved testability
|
|
{Test code demonstrating benefits}
|
|
```
|
|
|
|
## Real-World Example (Optional)
|
|
|
|
{Brief description of how this applies in production scenarios}
|
|
|
|
```typescript
|
|
// Production scenario: {Description}
|
|
{Realistic code example}
|
|
```
|
|
|
|
## Related Principles
|
|
|
|
- **{Related Rule 1}**: {Brief explanation of relationship}
|
|
- **{Related Rule 2}**: {Brief explanation of relationship}
|
|
- **{Related Rule 3}**: {Brief explanation of relationship}
|
|
|
|
## Further Reading (Optional)
|
|
|
|
- {Resource title} - {URL or reference}
|
|
- {Resource title} - {URL or reference}
|
|
|
|
## Language-Specific Notes (Optional)
|
|
|
|
### TypeScript/JavaScript
|
|
{Language-specific considerations}
|
|
|
|
### Python
|
|
{Language-specific considerations}
|
|
|
|
### Java
|
|
{Language-specific considerations}
|
|
|
|
### Go
|
|
{Language-specific considerations}
|
|
|
|
---
|
|
|
|
## Template Guidelines
|
|
|
|
### Frontmatter
|
|
|
|
- **id**: Use format `{prefix}-{concept}-{specificity}`. Must be unique and match filename.
|
|
- **title**: Full descriptive title, human-readable
|
|
- **category**: One of the 7 defined categories
|
|
- **priority**: critical (SOLID, Core) | high (Patterns, Org) | medium (Naming, Functions) | low (Comments)
|
|
- **tags**: 3-5 relevant tags for searchability
|
|
- **related**: 2-4 related rule IDs that commonly apply together
|
|
|
|
### Content Structure
|
|
|
|
1. **Title & Summary**: Clear, one-sentence explanation
|
|
2. **Bad Example**: Show the anti-pattern with clear problems listed
|
|
3. **Good Example**: Show proper implementation with benefits
|
|
4. **Why**: 5-7 benefits explaining the value
|
|
5. **When to Apply**: Practical scenarios
|
|
6. **Optional Sections**: Add as needed for complex rules
|
|
|
|
### Code Examples
|
|
|
|
- Use TypeScript for primary examples (language-agnostic)
|
|
- Keep examples focused and minimal
|
|
- Show realistic scenarios, not toy examples
|
|
- Include comments explaining key points
|
|
- Use ❌ for bad examples, ✅ for good examples
|
|
|
|
### Writing Style
|
|
|
|
- Be direct and actionable
|
|
- Focus on "why" not just "what"
|
|
- Use active voice
|
|
- Keep explanations concise
|
|
- Provide context for decisions
|
|
- Assume intermediate developer knowledge
|
|
|
|
### Length Guidelines
|
|
|
|
- Minimum: 200 lines (simple rules)
|
|
- Target: 300-400 lines (most rules)
|
|
- Maximum: 600 lines (complex patterns)
|
|
|
|
### Quality Checklist
|
|
|
|
- [ ] Frontmatter complete and accurate
|
|
- [ ] Clear bad example with explained problems
|
|
- [ ] Clear good example with explained benefits
|
|
- [ ] At least 5 benefits in "Why" section
|
|
- [ ] Practical "When to Apply" scenarios
|
|
- [ ] Related rules referenced
|
|
- [ ] Code examples are realistic
|
|
- [ ] Comments explain key concepts
|
|
- [ ] Language-agnostic where possible
|
|
- [ ] Proofread for clarity and typos
|