Backend Development

作者 mindrally97184105b5da无许可证269 个星标收录于 2026年10月8日更新于 2026年10月8日仓库5周前更新

Guidelines for backend development in C++ and Elixir/Phoenix, covering modern language features, best practices, and production-ready patterns.

AI 生成的概览

C++ 与 Elixir/Phoenix 后端开发指南,涵盖语言特性、命名约定与生产级模式。

功能
这是一份纯指令型参考,提供 C++ 与 Elixir/Phoenix 两套技术栈的后端开发指南。C++ 部分涵盖命名约定、以智能指针和 RAII 为核心的内存管理、现代语言特性、错误处理、const 正确性、类型转换、测试与文档。Elixir/Phoenix 部分涵盖以 context 划分的领域驱动组织、模式匹配、标签元组错误处理、监督树、LiveView 以及 Ecto changeset 校验。
适用场景
适用于编写、评审或组织 C++ 或 Elixir/Phoenix 后端代码,并希望统一约定、采用面向生产的模式时。适合所有权、错误处理、context 边界与数据校验等设计与实现决策。
运行要求
无需任何工具、依赖包或凭据;仅为指令,不附带脚本。

Backend Development

You are an expert in backend development with C++ and Elixir/Phoenix.

C++ Development

Naming Conventions

  • Use PascalCase for classes and structs
  • Use camelCase for variables and methods
  • Use SCREAMING_SNAKE_CASE for constants and macros

Memory Management

  • Prefer smart pointers (std::unique_ptr, std::shared_ptr) over raw pointers
  • Use std::unique_ptr for exclusive ownership
  • Use std::shared_ptr only when shared ownership is required
  • Implement RAII for all resource management
  • Avoid unnecessary heap allocations

Modern C++ Features

  • Use auto for type inference where it improves readability
  • Leverage range-based for loops
  • Use std::optional for values that may not exist
  • Use std::variant for type-safe unions
  • Apply structured bindings for cleaner code
  • Use std::move for move semantics

Error Handling

  • Use exceptions for error handling
  • Define custom exception types for domain-specific errors
  • Catch exceptions at appropriate boundaries
  • Ensure exception safety in all code

Best Practices

  • Enforce const-correctness throughout
  • Avoid C-style casts; use static_cast, dynamic_cast, etc.
  • Write unit tests with Google Test or Catch2
  • Document with Doxygen comments

Elixir and Phoenix Best Practices

Core Philosophy

  • Follow domain-driven design with PragDave philosophy
  • Use functional programming with explicit error handling
  • Embrace the "let it crash" principle

Code Organization

  • Organize code around business domains using Phoenix contexts
  • Keep contexts focused on single domains
  • Use bounded contexts to prevent coupling
  • Implement clear public APIs for each context

Pattern Matching and Control Flow

  • Use pattern matching extensively for data extraction
  • Apply "railway-oriented programming" with with statements
  • Chain operations cleanly with the pipe operator
  • Handle all pattern match cases explicitly

Error Handling

  • Return tagged tuples ({:ok, result} or {:error, reason})
  • Use with statements to chain fallible operations
  • Implement proper supervision trees
  • Handle expected errors explicitly

Phoenix Contexts

  • Group related functionality in contexts
  • Define clear boundaries between contexts
  • Use contexts as the API layer for business logic
  • Keep controllers thin, delegate to contexts

LiveView

  • Use LiveView as primary UI technology
  • Implement function components for reusable UI
  • Handle events in LiveView modules
  • Manage state appropriately in assigns

Data Validation

  • Validate at boundaries using Ecto.Changeset
  • Use changesets even outside database contexts
  • Define clear validation rules
  • Return helpful error messages

来源与署名

来源:mindrally/skills位于backend-development提交9718410

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架