设置布尔标志的最佳实践

Posted

技术标签:

【中文标题】设置布尔标志的最佳实践【英文标题】:Best practice for setting boolean flags 【发布时间】:2015-07-14 11:49:54 【问题描述】:

我正在寻找有关拥有一个具有标志的类的最佳实践,该标志决定是否可以对该类执行操作。整个类将在 WCF REST 服务中返回,并通过 RIA 服务在 Silverlight GUI 中使用,以便为用户设置要启用或禁用的某些操作按钮。我想知道以这种方式设置课程的最佳实践。例如:

public class SomeCustomerClass

    private bool _canResetCustomer;
    public bool CanResetCustomer
    
        get  return _canResetCustomer;  //TODO: Place GET logic here from DB if it's null
        set  _canResetCustomer = value; 
    

    if (this._canResetCustomer)
    
        ResetCustomer();
    
...

看到我的“待办事项”了吗?我需要确定是否设置了布尔值。如果尚未设置,我需要从数据库中的基于数据的规则列表中获取此客户的重置资格。在我看来,有两个选项,我以前都使用过:

    定义另一个 bool 来跟踪是否设置了 CanReset,如下所示:

        public bool _canResetSet  get; set; 
    

    将我的 bool 更改为可为空的类型。我认为在构造函数中我必须用 _canResetCustomer = null 实例化对象。也许吧?

我不知道我为什么要问这个问题,只是我可能只是对可空类型感到害羞。这整个困境是否与我设计事物的方式有关?我也经常在 Web 表单应用程序中使用这种标记方法。

【问题讨论】:

这是非常具体的。我怀疑那里有“最佳实践”。 使用 nullables 很好,否则它们不会在语言中。您当然可以考虑使用一些自定义枚举来反映三种状态,但这里可以为 null 看起来是一个有效的选项 您在问题中说DB。专门为此目的创建的可空类型 IIRC。 你可以使用可以为空的 bool 或 enum,但我会将对数据库的调用分解为一个方法,并默认将 bool 设置为 false。 我猜如果我默认设置为false,我怎么知道对象是否脏? 【参考方案1】:

使用可为空的。如果它的HasValue等于false,去检查数据库。没有必要在构造函数中将其设置为 null,因为它是默认值。

【讨论】:

领先我 30 秒

以上是关于设置布尔标志的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

DAO 级别布尔方法的最佳实践

标记 SQL Oracle 开发人员最佳实践

RESTful API 错误最佳实践

带结构的 QVector - 性能 + 最佳实践

应用程序设置绑定最佳实践

es6+最佳入门实践