ほとんどの言語は、true/false
ブール値のキーワードを使用します。Smalltalkでさえ使用していることがわかりましたtrue/false
。Objective-Cは、言語自体ではなく、Smalltalkから概念を借用しているだけですがYES/NO
、広く使用されているのではなく、なぜそれを使用しているのか興味がありtrue/false
ます。歴史的な理由はありますか?
5 に答える
Objective-C は、C の厳密なスーパーセットになるように設計されました (そして今もそうです)。作成者は、C との互換性を決して壊さないようにするために非常に懸命に働きました。彼らはまた、コードのどの部分が Objective-C を使用しており、どの部分がプレーン C を使用しているかを簡単に識別できるように、変更をある程度明確にしようとしました@
。これにより、プレーンな C 文字列を新しい文字列と共存させることができます。
C には、TRUE/FALSE マクロの非公式なシステムが既にありました。Objective-C の設計者は、競合を回避し、コードが実際に Objective-C であることを明確にするために、YES/NO マクロを選択したと思われます。nil
古き良き NULL の動作を変更するだけでなく、「空の」オブジェクトの使用法にも注意してください。
Objective-C は非常に冗長な言語であり、すべてのメソッドは非常に記述的であり、ブール値に true/false の代わりに YES/NO を使用すると、人間が読みやすくなります。
次の会話が実際に起こった場合、おそらく奇妙に感じるでしょう: A: 「映画を見ましたか?」B:「そうです」
B が「はい」(または「いいえ」) と答えた場合、それは完全に正常に聞こえ、コードは true/false の代わりに YES/NO を使用することでより平易な英語のように見えます。
Apple は常に物事を使いやすくしようと努めてきました。YES|NO
いくつかのシステム ブール値メソッドを読んで、またはを使用してブール値の質問に答えるのがより理にかなっている方法を自問すると 、答えが私の意見にあることにTRUE|FALSE
感謝することがわかります。YES|NO
それ以外の場合は、コードでいつでも使用できTRUE|FALSE
ます。
奇妙ですが、 / (これも機能します) よりもYES
/マクロを使用した方がコードが読みやすいことがわかりました。NO
TRUE
FALSE
ただし、現在、Objective-C は C99 のスーパーセットであるため、可能な限りC99boolean
型true
を使用する必要があります。私はand to andfalse
を定義するという考えをもてあそびましたが、これまで抵抗してきました。yes
no
true
false