无符号数而不是检查 DDD 中的不变性

问题描述 投票:0回答:1

如果您知道数字不能为负数,那么在 DDD 模型中哪种设计更好?

public record Quantity(uint Number);
public record Quantity()
{
    public int number { get; init; }
    public Quantity(int number)
    {
        if (number < 0) throw new ArgumentOutOfRangeException("Quantity must be positive");
    }
}
domain-driven-design
1个回答
0
投票

如果您知道数字不能为负数,那么在 DDD 模型中哪种设计更好?

我想不出我见过的任何 DDD 示例使用无符号类型作为通用数据结构。

无符号类型的一般规则是,您使用默认值来使用有符号类型,并且仅在适合手头的特定任务时才使用无符号类型。

Google C++ 风格指南

不要仅仅使用无符号类型来断言变量是非负的。

CPP 核心指南:ES106

不要试图通过使用无符号来避免负值

Stroustrup、Sutter 和 Carruth 在 2013 年意见一致

同意以上的网上讨论

© www.soinside.com 2019 - 2024. All rights reserved.