xb

构建器最佳实践

本文档是 xb/doc/BUILDER_BEST_PRACTICES.md 的中文版本。它总结了团队在实践中使用的约定,以保持构建器的可预测性和可读性。


1. 建模输入


2. 链式风格

技巧 为什么有帮助
将相关条件分组 更容易扫描,可通过辅助函数复用
使用 Cond(func(cb *CondBuilder)) 比手动括号堆叠 Or() 调用更好
保持方法顺序一致 Select → From → Join → Where → Sort → Limit 镜像 SQL
避免在闭包内产生副作用 构建器是纯数据;将 IO 保持在外部

3. 可复用块

func addTenantGuard(b *xb.Builder, tenantID uint64) *xb.Builder {
    return b.Eq("tenant_id", tenantID)
}

func addPagination(b *xb.Builder, req *PageRequest) *xb.Builder {
    return b.Limit(req.Limit()).Offset(req.Offset())
}

4. 可观测性


5. 安全护栏


6. 延伸阅读