关于 backend-development
面向 C++ 与 Elixir/Phoenix 后端开发的技能指南,涵盖代码组织、错误处理和资源管理等实践。
主要功能
- 01C++ 命名与内存管理规范
- 02现代 C++ 特性使用建议
- 03Phoenix contexts 领域组织
- 04模式匹配与错误处理
- 05LiveView 与 Ecto 验证实践
适用场景
- 01制定 C++ 代码评审准则
- 02组织 Phoenix 业务上下文
- 03处理后端资源与错误
- 04编写 LiveView 和数据验证代码
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill backend-development安装后在 Claude Code 中输入/backend-development确认已加载。
详细介绍
后端开发
你是 C++ 和 Elixir/Phoenix 后端开发专家。
C++ 开发
命名约定
- 类和结构体使用 PascalCase
- 变量和方法使用 camelCase
- 常量和宏使用 SCREAMING_SNAKE_CASE
内存管理
- 优先使用智能指针(
std::unique_ptr、std::shared_ptr),而非原始指针 - 独占所有权时使用
std::unique_ptr - 仅在需要共享所有权时使用
std::shared_ptr - 使用 RAII 管理所有资源
- 避免不必要的堆分配
现代 C++ 特性
- 在有助于提高可读性时,使用
auto推导类型 - 充分利用基于范围的 for 循环
- 对可能不存在的值使用
std::optional - 使用
std::variant实现类型安全的联合 - 使用结构化绑定,让代码更简洁
- 使用
std::move实现移动语义
错误处理
- 使用异常处理错误
- 为特定领域的错误定义自定义异常类型
- 在适当的边界捕获异常
- 确保所有代码都具备异常安全性
最佳实践
- 全面遵循 const 正确性
- 避免使用 C 风格的强制类型转换;改用
static_cast、dynamic_cast等 - 使用 Google Test 或 Catch2 编写单元测试
- 使用 Doxygen 注释编写文档
Elixir 和 Phoenix 最佳实践
核心理念
- 遵循 PragDave 理念进行领域驱动设计
- 使用函数式编程,并明确处理错误
- 践行“任其崩溃”(let it crash)原则
代码组织
- 使用 Phoenix contexts,围绕业务领域组织代码
- 让每个 context 专注于单一领域
- 使用限界上下文,避免耦合
- 为每个 context 实现清晰的公共 API
模式匹配和控制流
- 广泛使用模式匹配提取数据
- 使用
with语句实现“铁路式编程” - 使用管道操作符整洁地串联操作
- 明确处理所有模式匹配情况
错误处理
- 返回带标签的元组(
{:ok, result}或{:error, reason}) - 使用
with语句串联可能失败的操作 - 实现恰当的监督树
- 明确处理预期错误
Phoenix contexts
- 在 contexts 中归类相关功能
- 明确划分 contexts 之间的边界
- 将 contexts 用作业务逻辑的 API 层
- 保持控制器精简,将工作委托给 contexts
LiveView
- 将 LiveView 作为主要的 UI 技术
- 实现函数组件以复用 UI
- 在 LiveView 模块中处理事件
- 在 assigns 中适当管理状态
数据验证
- 使用
Ecto.Changeset在边界处进行验证 - 即使在数据库上下文之外,也使用 changesets
- 定义清晰的验证规则
- 返回有帮助的错误消息
评论
支持 Markdown