A stray commit buried multiple levels deep cost me months
4 hours ago
- 程序员应负责混乱的事务处理;框架和需求不应受到指责。
- 不要在数据库抽象层之外手动提交或使用事务;它应该拥有所有提交权。
- 避免在数据库层之外传递数据库模型对象,以防止静默写入。
- 使用AST分析或linter(如flake8)禁止在数据库层之外手动提交、访问会话和使用事务。
- 可以在CI中使用LLM检查数据库层是否返回数据库模型而不是领域模型。
- 考虑为原子性多写操作复制代码以保持原子性可见。
- 推荐书籍:《领域驱动设计》。