Doppelklammern im Beispielcode

8

Ich sehe in Samples und in Stubs, die XCode erzeugt, eine Menge Code wie diesen:

%Vor%

Ich bin nicht klar über die Absicht der Doppelklammer im Konditional.

    
iter 24.07.2010, 00:20
quelle

2 Antworten

7

Um den Kommentar von @Anders zu erweitern, sieht das spezifische Problem, gegen das es dich schützt, so aus:

%Vor%

90% der Zeit ist das ein Fehler. Du wolltest sagen foo == x . Aber in 10% der Fälle meintest du wirklich "weise x foo zu und dann teste für die Wahrheit". Der kanonische Fall ist while (ch = getchar()) . Aber das if (self = [super init]) ist ein anderes gutes Beispiel. Der Compiler nimmt an, dass solche Dinge Fehler sind, und gibt eine Warnung aus, es sei denn, Sie sagen dem Compiler, dass Sie es wirklich verstanden haben, indem Sie doppelte Klammern verwenden.

Persönlich mache ich es einfach so:

%Vor%

Es ist eine zusätzliche Zeile, aber es hält die Dinge nur ein klein wenig klarer, wenn der Init-Aufruf lang ist.

Abgesehen davon hat Aaron Hillegass von der Big Nerd Ranch einige von uns herausgefordert, einen Fall aufzustellen, in dem dieser self==nil check wirklich eine Rolle spielte. Die Fälle existieren, aber sie sind unglaublich wenige (Sie könnten self als NSObservation observer hinzufügen und Sie möchten nicht, dass es in diesem Fall nil ist). Nimm es für das, was es wert ist; In meinem persönlichen Code überspringe ich oft den nil check, aber in meinem professionellen Code ist es ein Teil des Standards meines Teams.

Als weiteres Beispiel hat Apple aus irgendeinem Grund eine zusätzliche Gcc-Option -Wmost hinzugefügt, die diese Warnung ausschaltet. Ich nehme an, dass jemand die zusätzlichen Klammern nicht gerne eingegeben hat. Es scheint mir eine schlechte Idee zu sein, es auszuschalten.

    
Rob Napier 24.07.2010, 01:12
quelle
2

ist nur um eine Warnung zu vermeiden.

    
Anders K. 24.07.2010 00:29
quelle

Tags und Links