为什么Objective-C使用YES/NO宏约定而不是true/false?

Eon*_*nil 18 convention boolean objective-c naming-conventions

大多数语言都使用true/false关键字作为布尔值.我发现即使是Smalltalk也在使用true/false.我知道Objective-C只是借用Smalltalk的概念,而不是语言本身,但我很好奇为什么它使用YES/NO而不是更广泛使用true/false.有历史原因吗?

Abh*_*uch 35

Objective-C被设计为(现在仍然是)C的严格超集.创作者非常努力地确保他们不会以任何方式破坏与C的兼容性.他们还尝试使他们的修改有些明显,以便很容易分辨代码的哪些部分使用Objective-C以及哪些部分使用plain C.例如,@用于表示NSStrings而不是仅仅使用引号.这允许普通C字符串与新字符串共存.

C已经有一个TRUE/FALSE宏的非正式系统.我怀疑Objective-C的设计者选择了YES/NO宏来避免冲突,并且很明显代码实际上是Objective-C.还要注意nil'empty'对象的用法,而不仅仅是修改好旧NULL的行为.


Mor*_*ast 5

Objective-C是一种非常详细的语言,所有方法都是非常具有描述性的,并且使用YES/NO表示布尔值而不是true/false使得它更具人性化.

你可能会发现以下对话很奇怪,如果它发生在现实生活中:A:"你看过电影了吗?" B:"真实"

如果B回答"是"(或"否"),则听起来完全正常,并且使用YES/NO而不是true/false,代码看起来更像普通英语.

  • 嗯......我不太确定"普通英语"的解释.如果他们的目的是提供清晰度,那么遵循几十年的惯例会不会更有意义? (2认同)