2 Stimmen

Wie wird dieser Objective-C-Code eingerückt?

Ich habe eine einfache Frage. Wie rücke ich eine sehr lange Zeile ein. Nehmen wir mal die traditionellen 80 Zeichen. Dies ist eine Zeile in meinem Code:

    NSString *count = [[NSString alloc] initWithString: [sTemp substringFromIndex:[sTemp rangeOfString:@"count="].location + [sTemp rangeOfString:@"count="].length]]; 

Eine Lösung war

    NSString *count = [[NSString alloc]                                 //line 1
                            initWithString: [sTemp substringFromIndex:
                                [sTemp rangeOfString:@"count="].location + 
                                [sTemp rangeOfString:@"count="].length]]; 

Dies ist nicht das beste Beispiel, aber die Idee ist gut:

  1. Ok, die erste Zeile ist die Zuweisung und Zuweisung Sache.

  2. Die Zeile 2 wird mit einem etwas größeren Abstand nach rechts eingerückt. Aber wenn der Name der Variablen oder des Typs sehr groß ist, habe ich die obige Situation. Was kann ich tun?

    NSStringWithVeryBigType *bigNameVariable = [NSStringWithVeryBigType alloc] 
                      initWithString: [sTemp substringFromIndex:
  3. In der zweiten Zeile erstelle ich einen neuen NSString. Ich kann verwirrt sein, wenn die Zeile 3 und 4 (in einer schlechten Situation, nicht diese) ist die Hauptfunktion Erstellung, oder ist diese neue ein. Haben Sie eine gute Regel über sie? Und wenn es einen großen Namen zu haben, was wieder zu tun...

Mit anderen Worten: Welche Regeln muss ich in einer großen Auftragslinie einhalten?

4voto

jscs Punkte 63009

Versuchen Sie nicht, alles in eine Zeile zu quetschen. Immer, wenn Sie seltsame verschachtelte Aufrufe wie diesen haben, machen Sie eine oder mehrere Zwischenvariablen für die Lesbarkeit:

NSRange rng = [sTemp rangeOfString:@"count="];
NSUInteger indexAfterCount = rng.location + rng.length;
NSString * countSubString = [sTemp substringFromIndex:indexAfterCount];

NSStringSubclassWithReallyLongName * countString;
countString = [[NSStringSubclassWithReallyLongName alloc] initWithString:countSubString];

3voto

Jonathan Grynspan Punkte 43004

[sTemp rangeOfString:@"count="] ist ein potenziell kostspieliger Vorgang, den Sie zweimal durchführen müssen. Sie sollten das Ergebnis in einer lokalen Variablen zwischenspeichern. Da Sie Ihre Teilzeichenkette unmittelbar nach dem gefundenen Bereich beginnen wollen, können Sie NSMaxRange() um diesen Wert bequem zu erhalten. Verwenden Sie außerdem -copy anstelle von -initWithString: para NSString da sie bei nahezu identischer Semantik eine bessere Leistung erbringen kann. Also:

NSRange range = [sTemp rangeOfString:@"count="];
NSString *count = [[sTemp substringFromIndex:NSMaxRange(range)] copy];

2voto

Charlie Martin Punkte 106684

Ich würde etwas tun wie:

NSString *count = [[NSString alloc] initWithString: 
    [sTemp substringFromIndex:
         [sTemp rangeOfString:@"count="].location 
       + [sTemp rangeOfString:@"count="].length]];

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X