best-practices

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

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "best-practices" with this command: npx skills add wutongci/agentdemo/wutongci-agentdemo-best-practices

软件开发最佳实践知识库

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

核心原则

  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)

  • 不要实现当前不需要的功能

  • 避免过早优化

  • 基于实际需求而非假设

  1. 代码组织

命名规范

  • 清晰表意:名称应该说明用途,而非实现

  • 一致性:遵循项目的命名约定

  • 避免缩写:除非是广为接受的缩写 (如 HTTP, URL)

  • 使用领域语言:使用业务领域的术语

示例:

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

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

函数设计

  • 小函数:一个函数只做一件事

  • 参数限制:参数不超过 3-4 个,更多时考虑对象

  • 避免副作用:函数应该是纯函数或明确其副作用

  • 返回值:有意义的返回值,明确的错误处理

注释规范

  • 代码即文档:好的代码不需要太多注释

  • 解释为什么:注释应该说明为什么这样做,而非做了什么

  • 及时更新:注释要与代码同步

  • API 文档:公共 API 必须有文档注释

  1. 错误处理

明确的错误处理

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

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

错误上下文

  • 错误消息应该包含足够的上下文

  • 使用错误包装(error wrapping)保留原始错误

  • 在适当的层级处理错误

自定义错误类型

  • 对于可恢复的错误,定义专门的错误类型

  • 便于调用者识别和处理特定错误

  1. 测试最佳实践

测试金字塔

  • 单元测试:数量最多,速度最快

  • 集成测试:中等数量,测试组件交互

  • 端到端测试:少量,测试完整流程

测试编写原则

  • AAA 模式:Arrange (准备), Act (执行), Assert (断言)

  • 独立性:测试之间不应该有依赖

  • 可重复性:多次运行结果一致

  • 自描述:测试名称说明测试什么

测试覆盖

  • 关键路径必须测试

  • 边界条件要测试

  • 错误场景要测试

  • 覆盖率不是唯一指标,质量更重要

  1. 性能最佳实践

数据库

  • 使用索引

  • 避免 N+1 查询

  • 使用批量操作

  • 适当的缓存策略

算法和数据结构

  • 选择合适的数据结构

  • 注意时间复杂度

  • 避免不必要的嵌套循环

资源管理

  • 及时释放资源(文件句柄、网络连接)

  • 使用对象池复用对象

  • 注意内存泄漏

  1. 安全最佳实践

输入验证

  • 永远不要信任用户输入

  • 验证、清理所有外部输入

  • 使用白名单而非黑名单

认证和授权

  • 使用成熟的认证库

  • 密码加密存储

  • 实施最小权限原则

敏感数据

  • 不要在代码中硬编码密钥

  • 使用环境变量或密钥管理服务

  • 敏感日志要脱敏

  1. 版本控制

Commit 规范

  • 清晰的消息:说明做了什么和为什么

  • 原子提交:一个 commit 做一件事

  • 频繁提交:小步提交,易于回滚

分支策略

  • 主分支永远可发布

  • 功能分支开发

  • 及时合并,避免长期分支

  1. 代码审查

审查重点

  • 功能正确性

  • 代码质量和可维护性

  • 潜在的 bug 和边界情况

  • 性能问题

  • 安全漏洞

审查态度

  • 建设性反馈

  • 基于事实和标准

  • 虚心接受建议

  • 解释决策原因

  1. 文档

必要的文档

  • README:项目概述和快速开始

  • API 文档:接口说明和示例

  • 架构文档:系统设计和关键决策

  • 运维文档:部署和监控

文档原则

  • 与代码同步更新

  • 简洁明了

  • 包含示例

  • 易于查找

  1. 持续改进

代码重构

  • 小步重构

  • 在测试保护下重构

  • 不改变外部行为

  • 及时清理技术债务

学习和分享

  • 代码审查是学习机会

  • 分享最佳实践

  • 从错误中学习

  • 保持技术更新

应用指导

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

  • 代码复杂度高:建议拆分函数,应用 SOLID 原则

  • 重复代码:建议提取公共逻辑,应用 DRY 原则

  • 命名不清:提供更好的命名建议

  • 缺少错误处理:指出错误处理的最佳实践

  • 性能问题:提供优化建议

  • 安全风险:指出潜在的安全问题

检查清单

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

代码质量

  • 命名清晰、有意义

  • 函数职责单一

  • 无重复代码

  • 错误处理完善

  • 有必要的注释

性能

  • 算法效率合理

  • 资源正确释放

  • 无明显性能瓶颈

安全

  • 输入已验证

  • 无敏感信息泄露

  • 权限检查正确

测试

  • 有对应的单元测试

  • 关键路径已覆盖

  • 边界条件已测试

文档

  • 公共 API 有文档

  • 复杂逻辑有说明

  • README 已更新

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

code-quality

No summary provided by upstream source.

Repository SourceNeeds Review
Security

security

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

best-practices

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

best-practices

No summary provided by upstream source.

Repository SourceNeeds Review