gpt4 book ai didi

c# - 关于 Juval Lowy 的 IDesign C# 编码标准的问题

转载 作者:可可西里 更新时间:2023-11-01 08:26:04 26 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




8年前关闭。




我们正在尝试使用 IDesign C# Coding standard .不幸的是,我没有找到全面的文档来解释它给出的所有规则,而且他的书并不总是有帮助。

以下是我留下的 Unresolved 问题(来自第 2 章,编码实践):

  • 第 26 条:避免为枚举提供显式值,除非它们是 2 的整数幂
  • 第 34 号:始终使用 for 循环显式初始化引用类型数组
  • 第50名:避免事件作为接口(interface)成员
  • 第 52 号:在类层次结构上公开接口(interface)
  • 第 73 条:不要在接口(interface)中定义特定于方法的约束
  • 第74条:不要在委托(delegate)中定义约束

  • 以下是我对这些的看法:
  • 我认为在稍后添加新的枚举成员时,提供明确的值会特别有用。如果将这些成员添加到其他现有成员之间,我将提供显式值以确保现有成员的整数表示不会改变。
  • 不知道为什么我要这样做。我会说这完全取决于我的程序的逻辑。
  • 我看到有提供“接收器接口(interface)”的替代选项(简单地提供已经所有的“OnXxxHappened”方法),但是选择一个而不是另一个的原因是什么?
  • 不确定他在这里的意思:这是否意味着“在非密封类中显式实现接口(interface)时,请考虑在可以覆盖的 protected 虚拟方法中提供实现”? (请参阅编程 .NET 组件第 2 版,“接口(interface)和类层次结构”一章的结尾)。
  • 我想这是关于在使用泛型时提供“where”子句,但为什么这在接口(interface)上很糟糕?
  • 我想这是关于在使用泛型时提供“where”子句,但为什么这对委托(delegate)来说很糟糕?
  • 最佳答案

    26号:二的幂意味着你想使用枚举作为位掩码(标志)。这是指定枚举值的唯一原因。为了稍后添加新成员,您仍然可以将它们附加到枚举定义中,而无需更改现有值。没有理由将它们放在现有成员之间。

    34号:我认为他想避免您有一个包含(部分)未初始化指针(空引用)的数组的情况。作为数组的消费者,它很诱人
    不检查有效数组变量中的空条目。

    关于c# - 关于 Juval Lowy 的 IDesign C# 编码标准的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7833855/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com