为什么C#不接受布尔运算符作为当前运算符的单词("and","或","not",...等)?

Hom*_*mam 3 c# programming-languages readability

我的if stetement:

if (!string.IsNullOrEmpty(Person.Name))
        // some code
Run Code Online (Sandbox Code Playgroud)

我觉得 "!" 编写命令式代码时,运算符的可读性较差,

你是否同意我的以下代码更具可读性?

if (not string.IsNullOrEmpty(Person.Name))
            // some code
Run Code Online (Sandbox Code Playgroud)

我不是在谈论替换当前的运算符,但是如果语言接受它们的话,问题出在哪里?

Dav*_*kle 11

有几个很好的理由:

  • 有一些细节,这些词语传达得不好.例如,短路AND运算符与不短路运算符(&& vs&).VB最近(ish)推出了一个名为AndAlso的短路AND运算符.这从来没有对我有任何意义.它似乎从一开始就混淆了人们.

  • 减少打字.布尔逻辑在任何地方都使用,每个表达式上保存的几个按键可以累加很多 - 或者至少,我发现必须输入更多是非常烦人的.

  • 因为它是C,Java,Objective-C和C++程序员习惯的.人们现在已经使用这种语法40(?) - ish years.它为人们似乎喜欢的语言带来了连续性.

  • "and","或"和"not"是英文单词,使用像这样的字形的语法!和&& /&在语言和文化上更加中立.

  • 添加更多操作符意味着相同的操作对于语言的操作是不必要的,并且可能令人困惑.

  • @lomaxx:语言中立是imho最弱点.无论如何,大多数文档都是英文的.所有其他关键字都是英语(我们应该用`#$ - `替换`class`来保持语言中立吗?). (10认同)
  • 实际上[C++通过包含`<iso646.h>`]来支持`和',`或`和```本身,以及C(http://en.wikipedia.org/wiki/Iso646.h). (3认同)

lom*_*axx 7

如果您希望代码更具"可读性",那么VB可能是更好的选择.有这样的陈述是完全有效的

If value Is Not Null Then
   'do something
End If
Run Code Online (Sandbox Code Playgroud)

我个人发现c#语法!和&&和|| 具有很强的可读性,因为它们在多种语言中是一致的,并且也倾向于遵循数学中使用的惯例,这些惯例通常起源于这些操作.

这也意味着它们的含义没有歧义,因为它是一个象征.

  • 在VB和朋友们:"用"自然语言"促进编程的项目本质上注定要失败. - Dijkstra (5认同)