【问题标题】:Coding conventions and standards编码约定和标准
【发布时间】:2019-10-17 05:38:53
【问题描述】:

谁能判断写入属性的值是否被视为硬编码值。

例如 customerId 写在 JsonProperty

{
        [JsonProperty("customerId")]
        public int CustomerId { get; set; }

        [JsonProperty("name")]
        public string Name { get; set; }

        [JsonProperty("phoneNumber")]
        public long PhoneNumber { get; set; }
}

【问题讨论】:

  • 当然它们是硬编码的值。为什么在这种情况下这是一件坏事?
  • 用例是什么?如果您在启动时将值从文件加载到属性中,恕我直言,它们不是硬编码的。如果你用一个常量字符串填充它们,它们就是。它不依赖于属性本身。
  • @Markus 你怎么能那样做?属性是常量值。你可能做到的唯一方法是,如果你有一些东西可以在编译时注入它们。
  • 在 c# 中,属性是类型的一部分,就像方法和属性名称、接口、访问修饰符以及构成类型的所有其他内容一样。你会认为你的方法名称是“硬编码的”吗?
  • 哇,废话,我的大脑似乎处于“暂停”状态。我混合了属性和属性:/这些当然是硬编码的。

标签: c# attributes hardcoded


【解决方案1】:

如果它们在属性中,它们必须是常量,不能是变量。我没有遇到任何编码指南说应该避免这种情况。

【讨论】:

    【解决方案2】:

    一般常量文件包含经常使用的字符串常量,因此我们替换这些常量,这样如果稍后我们必须更改它,那么我们只需要在一个位置(常量类)而不是在多个位置进行更改在您的情况下,属性具有硬编码值,但除非在多个地方使用这些确切值,否则我真的没有看到任何问题或任何需要将它们放在常量类文件下,这只是我们保持常量的原因之一首先上课,是的,还有更多原因,但是我认为上述方法没有任何问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多