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

标签 c# coding-style

我喜欢并强烈推荐 Juval Lowy's - C# Coding Standard . Juval 明确避免了每个指令的基本原理,以保持标准严格(参见前言)。但是,我发现自己对一些指令的基本原理感到好奇。

Lowy 的 C# 标准中的以下指令的具体原理是什么?
希望对这些有硬(非主观)的答案。

1.13 避免完全限定的类型名称。请改用“using”语句。
这是性能问题吗?有时我只需要一个完全限定名称的实例,添加一个using 似乎很繁重。

1.26 在无参数匿名方法上使用空括号。仅当匿名方法可以用于任何委托(delegate)时才省略括号。
其实我只是被第二句话弄糊涂了。举例说明会有所帮助,谢谢。

2.19 避免定义自定义异常类
尽量减少它们的数量有什么考虑? (如果您确实定义了它们(在 2.20 中),他接下来会给出指导方针。)

2.29 避免使用三元条件运算符
是读者难以消化,还是其他考虑?

2.31 避免在 bool 条件语句中调用函数。分配给局部变量并检查它们。
我不认为我会这样做,但我很好奇...为什么不呢?

2.47 避免与一个成员接口(interface)。
因为总是/通常更喜欢做什么?一种方法接口(interface)何时工作?

2.53 更喜欢使用显式接口(interface)实现
为什么?另外,Jon Skeet disagrees here .

提前致谢! 罗伯特

最佳答案

2.29 避免使用三元条件运算符 我对三元运算符的“简单”使用没有任何问题,但建议不要以嵌套方式使用它:

// This is fine
x := (conditionA) ? true_resultA : false_resultA;

// This would probably be clearer using if-then-elseif
x := (conditionA) ? 
       ((conditionA1) ? true_resultA1 : (condition2) ? true_result2 : false_result2) :
       ((conditionA2) ? true_resultA2 : false_resultA2);

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

相关文章:

python - 相当于 Python 生成器的 `return`

c# - 使用 asmdef 生成的程序集中的单一行为

c - 避免私有(private)函数的原型(prototype)声明(在使用前定义)是否违反 MISRA?

coding-style - 排队运算符(operator)是一种有值(value)的风格吗?

haskell - Haskell 标识符中的撇号

python - 我不遵循 PEP 8 并把我的台词缩减为 79 个字符,这是不是很糟糕?

c# - 如何通过几个点绘制贝塞尔曲线?

c# - 单根类层次结构的优点

c# - 我应该如何在 C# 中编写生产者/消费者代码?

c# - 如何在图像上的文字下生成阴影