1

Nimbus の一部のコードは次のようになっています。

if (nil == someObject)

しかし、私は通常次のように入力します:

if (someObject == nil)

これらのステートメントに違いはありますか?

4

5 に答える 5

4

いいえ。

(SOの最小投稿ルールには余分な何とか何とか。それらは役に立ちませんでしたか?)

于 2012-08-16T15:08:57.857 に答える
3

機能的には同じですが、コーディング スタイルの問題です。

昔は、等号を忘れてもコンパイラは警告しませんでした。

if (someObject = nil) 

おそらくあなたが望むことはしません。しかし、それらを逆にすると:

if (nil = someObject)  

その後、コンパイラは文句を言います。

最近では、おそらく違いはありません。

于 2012-08-16T15:10:53.660 に答える
2

技術的にいいえ。前者のニンバスは、「ヨーダ条件」と呼ばれるものを使用しています。

ここで誰にでもできるゲームの名前です。ほら、問題はこれです:

if (someObject = nil) // SETS someObject to nil

は完全に有効で、 から 1 文字しか離れておらず== nil、見落としがちです。ただし、これを行おうとすると、次のようになります。

if (nil = someObject)

あなたのコンパイラはびっくりして、問題を防ぎます。

個人的にはYoda Conditionals は読みにくいと思うので嫌いです。それは自分のコードに細心の注意を払うことを意味します。ここではすべてがスタイルにかかっているので、より快適にするものは何でも選びましょう.

ああ、Xcode を使用している場合、これはほとんど議論の余地があります。この質問を確認すると、if余分な括弧なしで代入を行おうとすると、Xcode が警告を表示するようになったことがわかります。あれは、

if (someObject = nil) // throws a warning, whereas
if ((someObject = nil)) // does not

問題を見逃すのがはるかに難しくなります。

于 2012-08-16T15:14:24.093 に答える
1

いいえ、しかし以下のコードはより読みやすくなっています。

左側: 「尋問される」という表現。その価値は流動的です。

右側: 比較される式で、値がより一定です。

于 2012-08-16T15:13:41.600 に答える
0

現在の唯一の違いは、2 番目の形式の方が読みやすいということです (または、主観的なもので、私だけが好むのかもしれません)。

于 2012-08-16T15:14:47.263 に答える