【问题标题】:Removing Null from all enums in a solution [closed]从解决方案中的所有枚举中删除 Null [关闭]
【发布时间】:2014-06-11 12:54:25
【问题描述】:

根据以下问题和答案的回答,如果在整个项目中从未使用过 Null 值,是否真的值得从中等重量 [50,000 行] 项目中删除所有 Null 实例?它可能看起来像在 resharper 中的简单右键单击,但它真的值得付出努力吗?我会得到什么?只是一个更好的实践代码?

Is it a good practice to add a “Null” or “None” member to the enum

C# Enums: Nullable or 'Unknown' Value?

【问题讨论】:

  • 最后一句话让人们投票反对并投票关闭......
  • 您是在问是否应该删除未使用的枚举值?如果不使用,为什么还要离开它?
  • 是的,还没用过。
  • 如果你有未使用的代码,而且它根本没有任何用途,为什么要保留它?

标签: c# .net enums null


【解决方案1】:

您是否应该删除枚举的未使用的“None/null”值与您对问题whether you believe you should have "None/null" value 的回答相同。如果您认为它们不应该存在,请将其删除。如果您认为它应该存在,请保留它。

我相信这个问题是现有问题的一个微小扩展。删除一个未使用的枚举成员是一个很容易撤消的单行更改。

一个可能的陷阱是删除枚举成员会更改Enum.ToString 的输出。

【讨论】:

    【解决方案2】:

    考虑这个枚举:

    enum Color { None, Red, Green, Blue }
    

    这将打印“无”:

    Console.WriteLine(default(Color));
    

    如果您删除 None,该语句将打印其他内容。

    如果你这样做会打印“0”:

    enum Color { Red = 1, Green, Blue }
    

    如果你这样做,它将打印“红色”:

    enum Color { Red, Green, Blue }
    

    另外,后面的变化会对序列化的值产生影响。

    在假设未使用 None 值时要小心,因为您在代码中看不到对它的引用。

    类似的观察适用于该代码:

    var colors = new Color[10];
    
    Console.WriteLine(colors[0]);
    

    var color = (Color) 1;
    

    【讨论】:

    • 非常好的点克里斯。那些 Null 枚举现在就在代码中,对我没有任何伤害,但我认为删除它们可能是麻烦的开始。
    • @Socrates 他们的“伤害”主要限于一些元数据。如有疑问,请不要为了这么小的潜在利益而更改工作代码。
    【解决方案3】:

    看看不同的方面,删除未使用的枚举值的一些优点:

    • 删除未使用的代码通常有助于提高可读性和可维护性。
    • 没有目的的值会引起混淆。

    还有一些可能的陷阱:

    • 一个未使用的枚举值可能仍然具有仅存在的文档用途。
    • 未使用的枚举值可能仍会影响其他枚举值获得的值。
    • 更改代码始终存在引入错误的潜在风险。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 2012-11-15
      • 2022-01-25
      • 2015-01-15
      相关资源
      最近更新 更多