返回 Skill 列表
extension
分类: 开发与工程无需 API Key

quality-common

适用于所有语言的通用代码质量原则。涵盖干净代码、SOLID原则、复杂度指标和质量标准。使用场景:当用户提到“干净代码”、“SOLID”、“代码异味”、“重构”、“复杂性”,或者询问关于“圈复杂度”、“认知复杂度”、“代码审查”、“可维护性”。不适用场景:特定语言的代码检查 - 使用ESLint/Biome技能,安全性 - 使用OWASP技能,测试 - 使用测试相关技能。

person作者: jakexiaohubgithub

Universal Code Quality Principles

When NOT to Use This Skill

  • Language-specific rules - Use TypeScript/Java/Python skills for syntax/idioms
  • Security issues - Use owasp-top-10 for vulnerabilities
  • Testing strategies - Use Vitest/Playwright skills for test quality
  • Linting configuration - Use ESLint/Biome skills for tool setup

Deep Knowledge: Use mcp__documentation__fetch_docs with technology: clean-code for comprehensive documentation.

Authoritative References

| Principle | Source | Link | |-----------|--------|------| | Clean Code | Robert C. Martin | Clean Code Book | | SOLID | Robert C. Martin | SOLID Principles | | Refactoring | Martin Fowler | Refactoring Catalog | | Cognitive Complexity | SonarSource | Whitepaper (PDF) |


Clean Code Principles

Naming

  • Intention-revealing: Names should explain purpose
  • Pronounceable: Avoid abbreviations
  • Searchable: Avoid single letters except loops

Functions

  • Small: 20 lines max, ideally < 10
  • Single purpose: Do one thing well
  • Few arguments: 0-2 ideal, 3 max

Comments

  • Code should be self-documenting
  • Comments explain "why", not "what"
  • Avoid redundant comments

SOLID Principles

| Principle | Description | Violation Sign | |-----------|-------------|----------------| | Single Responsibility | One reason to change | Class does too much | | Open/Closed | Open for extension, closed for modification | Switch statements on type | | Liskov Substitution | Subtypes must be substitutable | Override throws exception | | Interface Segregation | Many specific interfaces | Unused interface methods | | Dependency Inversion | Depend on abstractions | new in business logic |


Code Metrics & Thresholds

Complexity Metrics

| Metric | Description | Threshold | Tool | |--------|-------------|-----------|------| | Cyclomatic Complexity | Number of independent paths | < 10 | SonarQube, ESLint | | Cognitive Complexity | How hard to understand | < 15 | SonarQube | | Lines per Function | Function length | < 30 | All linters | | Parameters | Function arguments | < 4 | All linters | | Nesting Depth | If/loop nesting | < 4 | SonarQube |

Quality Gates (SonarQube Standard)

| Metric | Condition | Target | |--------|-----------|--------| | Coverage | on new code | > 80% | | Duplications | on new code | < 3% | | Maintainability Rating | overall | A | | Reliability Rating | overall | A | | Security Rating | overall | A |


Code Smells Categories

Bloaters

  • Long Method
  • Large Class
  • Long Parameter List
  • Data Clumps

Object-Orientation Abusers

  • Switch Statements
  • Refused Bequest
  • Alternative Classes with Different Interfaces

Change Preventers

  • Divergent Change
  • Shotgun Surgery
  • Parallel Inheritance Hierarchies

Dispensables

  • Dead Code
  • Duplicate Code
  • Lazy Class
  • Speculative Generality

Couplers

  • Feature Envy
  • Inappropriate Intimacy
  • Message Chains

Refactoring Patterns

| Smell | Refactoring | Description | |-------|-------------|-------------| | Long Method | Extract Method | Break into smaller functions | | Duplicate Code | Extract Method/Class | Create reusable unit | | Long Parameter List | Introduce Parameter Object | Group related params | | Switch on Type | Replace with Polymorphism | Use strategy pattern | | Feature Envy | Move Method | Put behavior with data | | God Class | Extract Class | Split responsibilities |

Full Catalog: https://refactoring.com/catalog/


Quick Checklist

## Code Review Checklist

### Readability
- [ ] Clear, intention-revealing names
- [ ] Functions are small and focused
- [ ] No magic numbers/strings
- [ ] Appropriate abstraction level

### Maintainability
- [ ] Single Responsibility followed
- [ ] No code duplication (DRY)
- [ ] Dependencies injected, not created
- [ ] Easy to test in isolation

### Reliability
- [ ] Edge cases handled
- [ ] Errors handled appropriately
- [ ] No null pointer risks
- [ ] Resources properly closed

### Performance
- [ ] No N+1 queries
- [ ] Appropriate data structures
- [ ] No premature optimization
- [ ] Caching where appropriate

Anti-Patterns

| Anti-Pattern | Why It's Bad | Correct Approach | |--------------|--------------|------------------| | God Class (1000+ lines) | Violates SRP, hard to test | Split into focused classes | | Magic numbers everywhere | Unclear meaning, hard to change | Use named constants | | Deep nesting (5+ levels) | Hard to understand | Extract methods, early returns | | Long parameter lists (6+ params) | Hard to remember order | Use parameter objects/builders | | Copy-paste programming | Duplication, maintenance nightmare | Extract shared logic to functions | | No error handling | Silent failures | Explicit error handling with logging |

Quick Troubleshooting

| Issue | Likely Cause | Solution | |-------|--------------|----------| | Function has complexity > 20 | Too many branches/loops | Extract sub-functions, use strategy pattern | | Class over 500 lines | Multiple responsibilities | Apply SRP, split into multiple classes | | Tests hard to write | Tight coupling, no DI | Use dependency injection | | Same code in 3+ places | No abstraction | Extract to shared function/class | | Function takes 10+ parameters | Poor abstraction | Create parameter object or builder | | Code hard to understand | Poor naming, no abstraction | Refactor with intention-revealing names |


Related Skills

  • Language-specific rules: languages/typescript, languages/java, languages/python
  • Security: security/owasp-top-10
  • Design Patterns: best-practices/design-patterns