Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 可空布尔切换的命名约定_C#_Naming Conventions - Fatal编程技术网

C# 可空布尔切换的命名约定

C# 可空布尔切换的命名约定,c#,naming-conventions,C#,Naming Conventions,我有一个消息实体,比如(message),创建者可以将其配置为 IsWebOnlywhere by仅在常规网站上显示 ismobilileonly在此之前,它将仅显示在网站的移动版上 该消息也可以设置为在网站的两种形式(常规和移动)上显示 我想将此属性捕获为可为空的布尔值。说X public class Message { public bool? X {get;set;} public bool IsMobileMessage { get {return X.HasV

我有一个消息实体,比如(
message
),创建者可以将其配置为

  • IsWebOnly
    where by仅在常规网站上显示
  • ismobilileonly
    在此之前,它将仅显示在网站的移动版上
  • 该消息也可以设置为在网站的两种形式(常规和移动)上显示
  • 我想将此属性捕获为可为空的布尔值。说X

     public class Message {
    
         public bool? X {get;set;}
    
         public bool IsMobileMessage { get {return X.HasValue ? !X.Value : true } }
    
         public bool IsWebMessage {get {return X.HasValue ? X.Value : true} }
    
       }
    
    • 该属性最可读的名称是什么
    • 是否应使用
      枚举
      而不是
      可为空的布尔值
      捕获此三态?
      • Nullable boolean
        似乎对我更有吸引力,因为属性的状态不会有进一步的添加
    是否应该使用枚举而不是可为null的枚举捕获此三态 布尔值

    当然,这将是自文档化的,并且更易于维护-使用枚举。您当前的代码充其量是令人困惑的,只是看看它,我很难理解逻辑-我不希望维护该代码-传统上,可以使用可为空的bool来捕获真、假以及作为第三状态的值的缺失。将值缺失(
    null
    )重新解释为不同的含义只会带来麻烦

    是否应该使用枚举而不是可为null的枚举捕获此三态 布尔值


    当然,这将是自文档化的,并且更易于维护-使用枚举。您当前的代码充其量是令人困惑的,只是看看它,我很难理解逻辑-我不希望维护该代码-传统上,可以使用可为空的bool来捕获真、假以及作为第三状态的值的缺失。将值缺失(
    null
    )重新解释为不同的意思只会带来麻烦。

    因为第三种状态是两个条件都为真,所以实际上有两个布尔值。当然,这意味着有四个状态,其中一个状态无效,但即使如此,我还是会使用Flags枚举:

    [Flags]
    enum MessageType
    {
        Web = 1,
        Mobile = 2,
        Both = Web | Mobile
    }
    

    如果您关心对象的大小,您可以将底层类型声明为byte,然后它实际上将小于bool?,即两个字节。

    因为第三种状态是两个条件都为true,所以您确实有两个boolean。当然,这意味着有四个状态,其中一个状态无效,但即使如此,我还是会使用Flags枚举:

    [Flags]
    enum MessageType
    {
        Web = 1,
        Mobile = 2,
        Both = Web | Mobile
    }
    

    如果您关心对象的大小,您可以将底层类型声明为byte,然后它实际上将小于bool?,即两个字节。

    我认为
    enum bool{True,False,FileNotFound}
    是常见的模式。我认为
    enum Bool{True,False,FileNotFound}是常见的模式。