Claude Code Plugins

Community-maintained marketplace

Feedback

best-practices

@wutongci/agentdemo
6
0

提供软件开发最佳实践指导,自动检查和建议改进

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name best-practices
description 提供软件开发最佳实践指导,自动检查和建议改进
allowed-tools fs_read
triggers [object Object], [object Object], [object Object]

软件开发最佳实践知识库

本技能提供软件开发中的最佳实践指导,涵盖代码质量、架构设计、团队协作等方面。

核心原则

1. 代码质量原则

SOLID 原则

  • S - Single Responsibility (单一职责)

    • 每个类/函数只负责一件事
    • 如果一个类有多个修改的理由,说明职责过多
  • O - Open/Closed (开闭原则)

    • 对扩展开放,对修改关闭
    • 通过接口和抽象实现扩展
  • L - Liskov Substitution (里氏替换)

    • 子类应该可以替换父类
    • 不要在子类中改变父类的行为
  • I - Interface Segregation (接口隔离)

    • 不应该强迫客户端依赖它不使用的方法
    • 接口应该小而专注
  • D - Dependency Inversion (依赖倒置)

    • 依赖于抽象而非具体实现
    • 高层模块不应该依赖低层模块

DRY 原则 (Don't Repeat Yourself)

  • 避免重复代码
  • 提取公共逻辑到函数或模块
  • 使用配置而非硬编码

KISS 原则 (Keep It Simple, Stupid)

  • 保持简单
  • 选择最简单的解决方案
  • 避免过度设计

YAGNI 原则 (You Aren't Gonna Need It)

  • 不要实现当前不需要的功能
  • 避免过早优化
  • 基于实际需求而非假设

2. 代码组织

命名规范

  • 清晰表意:名称应该说明用途,而非实现
  • 一致性:遵循项目的命名约定
  • 避免缩写:除非是广为接受的缩写 (如 HTTP, URL)
  • 使用领域语言:使用业务领域的术语

示例:

// ❌ 不好的命名
func proc(d []byte) int { ... }
var x int = 5

// ✅ 好的命名
func ProcessUserData(data []byte) int { ... }
var maxRetryAttempts int = 5

函数设计

  • 小函数:一个函数只做一件事
  • 参数限制:参数不超过 3-4 个,更多时考虑对象
  • 避免副作用:函数应该是纯函数或明确其副作用
  • 返回值:有意义的返回值,明确的错误处理

注释规范

  • 代码即文档:好的代码不需要太多注释
  • 解释为什么:注释应该说明为什么这样做,而非做了什么
  • 及时更新:注释要与代码同步
  • API 文档:公共 API 必须有文档注释

3. 错误处理

明确的错误处理

// ❌ 吞掉错误
result, _ := someFunction()

// ✅ 明确处理错误
result, err := someFunction()
if err != nil {
    return fmt.Errorf("failed to process: %w", err)
}

错误上下文

  • 错误消息应该包含足够的上下文
  • 使用错误包装(error wrapping)保留原始错误
  • 在适当的层级处理错误

自定义错误类型

  • 对于可恢复的错误,定义专门的错误类型
  • 便于调用者识别和处理特定错误

4. 测试最佳实践

测试金字塔

  • 单元测试:数量最多,速度最快
  • 集成测试:中等数量,测试组件交互
  • 端到端测试:少量,测试完整流程

测试编写原则

  • AAA 模式:Arrange (准备), Act (执行), Assert (断言)
  • 独立性:测试之间不应该有依赖
  • 可重复性:多次运行结果一致
  • 自描述:测试名称说明测试什么

测试覆盖

  • 关键路径必须测试
  • 边界条件要测试
  • 错误场景要测试
  • 覆盖率不是唯一指标,质量更重要

5. 性能最佳实践

数据库

  • 使用索引
  • 避免 N+1 查询
  • 使用批量操作
  • 适当的缓存策略

算法和数据结构

  • 选择合适的数据结构
  • 注意时间复杂度
  • 避免不必要的嵌套循环

资源管理

  • 及时释放资源(文件句柄、网络连接)
  • 使用对象池复用对象
  • 注意内存泄漏

6. 安全最佳实践

输入验证

  • 永远不要信任用户输入
  • 验证、清理所有外部输入
  • 使用白名单而非黑名单

认证和授权

  • 使用成熟的认证库
  • 密码加密存储
  • 实施最小权限原则

敏感数据

  • 不要在代码中硬编码密钥
  • 使用环境变量或密钥管理服务
  • 敏感日志要脱敏

7. 版本控制

Commit 规范

  • 清晰的消息:说明做了什么和为什么
  • 原子提交:一个 commit 做一件事
  • 频繁提交:小步提交,易于回滚

分支策略

  • 主分支永远可发布
  • 功能分支开发
  • 及时合并,避免长期分支

8. 代码审查

审查重点

  • 功能正确性
  • 代码质量和可维护性
  • 潜在的 bug 和边界情况
  • 性能问题
  • 安全漏洞

审查态度

  • 建设性反馈
  • 基于事实和标准
  • 虚心接受建议
  • 解释决策原因

9. 文档

必要的文档

  • README:项目概述和快速开始
  • API 文档:接口说明和示例
  • 架构文档:系统设计和关键决策
  • 运维文档:部署和监控

文档原则

  • 与代码同步更新
  • 简洁明了
  • 包含示例
  • 易于查找

10. 持续改进

代码重构

  • 小步重构
  • 在测试保护下重构
  • 不改变外部行为
  • 及时清理技术债务

学习和分享

  • 代码审查是学习机会
  • 分享最佳实践
  • 从错误中学习
  • 保持技术更新

应用指导

当检测到以下情况时,自动提供相关建议:

  • 代码复杂度高:建议拆分函数,应用 SOLID 原则
  • 重复代码:建议提取公共逻辑,应用 DRY 原则
  • 命名不清:提供更好的命名建议
  • 缺少错误处理:指出错误处理的最佳实践
  • 性能问题:提供优化建议
  • 安全风险:指出潜在的安全问题

检查清单

在代码审查或开发时,参考以下清单:

代码质量

  • 命名清晰、有意义
  • 函数职责单一
  • 无重复代码
  • 错误处理完善
  • 有必要的注释

性能

  • 算法效率合理
  • 资源正确释放
  • 无明显性能瓶颈

安全

  • 输入已验证
  • 无敏感信息泄露
  • 权限检查正确

测试

  • 有对应的单元测试
  • 关键路径已覆盖
  • 边界条件已测试

文档

  • 公共 API 有文档
  • 复杂逻辑有说明
  • README 已更新