Frage

Welche Syntax denken Sie, ist besser / besser lesbar?

if(!myViewController.view.superview)

oder:

if(myViewController.view.superview == nil)

Danke !!

War es hilfreich?

Lösung

Die beiden sind sehr nah, es kommt auf die persönlichen Geschmack oder die conding Standards des Projekts in Frage.

Zu sagen! MyViewController.view.superview bedeutet "kein Superview" sehr klar ist.

Sagen myViewController.view.superview == null bedeutet Superview ist gleich Null ist auch sehr klar.

Ich würde wahrscheinlich die ehemaligen bevorzugen, da, wenn ich auf Englisch schreibe, würde ich sagen:

  

, wenn es keine Super dann

Ich würde nicht sagen,

  

, wenn die Superview ist nichts dann

Aber sie sind so nah, und völlig gleichwertig, dass es kaum wert ist auch im Einklang mit dem Sein. Verstehen Sie mich nicht falsch, ich alle für Konsistenz im Allgemeinen bin, ist es nur gibt es wirklich keinen Unterschied in der Lesbarkeit zwischen den beiden.

Andere Tipps

Ich verwende die zweite Form, weil die Absicht mehr klar, dass Art und Weise ist.

Hier ist ein Link zu Googles Objective C Coding-Standards: http://google-styleguide.googlecode.com/svn/trunk/objcguide. xml

Sie nicht explizit sagen, welche Art und Weise sie es vorziehen, aber sie sagen, nur null Kontrollen für Logik zu verwenden, von denen Ihr Beispiel oben qualifizieren würde.

persönlich für eine lange Zeit, die ich den letzteren Ausdruck verwendet, sondern umgekehrt. „Foo == null“ (oder null == foo, um Fehler durch zu vergessen, ein ‚=‘ verursacht zu vermeiden) ist mehr pedantisch. Schließlich werden Sie es einzutippen müde, und die erste Version ist auch immun gegen die versehentliche nil Zuordnung Fehler.

Es ist gut für neue Programmierer in ausführlichem zu sein, was sie Codierung, wie es der Praxis liefert sie zu zwingen, darüber nachzudenken, was wirklich vor sich geht, aber später, natürlich Umstellung auf eine Version, die schneller ist, wenn sie gleichwertig ist.

Wenn Sie aus irgendeinem Grunde verrückt, Null-Zeiger waren nicht 0 mehr, aber einiger anderer ungültiger Wert (es gibt ganze gigantische Speicherbereiche, die als Zeiger ungültig sind), dann mit ‚!‘ würde nicht mehr funktionieren, aber das wird nie passieren (oder wenn es so wäre, würden sie Unterstützung für den Compiler hinzuzufügen, um eine Überlastung ‚!‘, so dass es „nicht ungültig“ gemeint, wenn sie mit einem Objektzeiger verwendet und würde das Richtige tun wie auch immer, oder auch die Objective-C-Entwickler der Welt würden verrückt werden).

Das einzige subtile Problem dabei ist, dass es beginnen Sie trainieren den Wert von C der Booleschen Ausdrücken mit den Werten anderer Arten zu verwechseln, die sie nicht dasselbe sind. Also, wenn Sie ein boolean Ausdruck anfangen zu denken, ist nur ein BOOL, sagen wir, könnte man davon ausgehen, dass alle Nicht-Null-Wert auf eine BOOL Variablen zugewiesen wird tun, was Sie wollen, aber es wird nicht. Da ein BOOL ist nur ein Zeichen (derzeit), wenn Sie so etwas wie:

    - (BOOL)checkFoo {
  BOOL foo = [bar count]; // imagine count is > 255
    if(foo)
      [self doSomething];
    return foo;
}

wobei 256 oder höher BOOL implizit Casting bekommt man (NO) durch Abschneiden Null, nicht JA, das ist, was Sie wollen, im Vergleich zu

    - (BOOL)checkFoo {
  BOOL foo = ([bar count] > 0);
    if(foo)
      [self doSomething];
    return foo;
}

oder

- (BOOL)checkFoo {
    if([bar count]) {
      [self doSomething];
      return YES;
    }
    return NO;
}

Alles, was ich will damit sagen, stellen Sie sicher, dass Sie verstehen, den Hintergrund und die Feinheiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top