2017-02-13 5 views
0

ich nicht sicher bin, wie ich diese lange Codezeile brechen sollte (wurde von bedingten und Schalter blockiert weiter eingerückt):eine lange Reihe von verschachtelten Methode Formatierung ruft in Java

titleText.setText(cursor.getString(cursor.getColumnIndex(MovieContract.TrailerEntry.COLUMN_NAME))); 

es ist mein zu verstehen, dass die Leitung durch eine 8 Raum Einrückung soll nach jeder Methode Argumente der äußersten Methodenaufruf an den innerste Argumente Methodenaufruf aufgebrochen, bis die nächste Zeile paßt:

titleText.setText(cursor 
     .getString(cursor.getColumnIndex(MovieContract.TrailerEntry.COLUMN_NAME))); 

sondern nach diesem Beitrag Formatting multiple arguments passed to a function in Java die vorgenannten Methode ist nur ein Standard und die p roper viel Platz ist, bis Sie in-line mit dem ersten Argument der obigen Linie

titleText.setText(cursor 
       .getString(cursor 
          .getColumnIndex(MovieContract 
              .TrailerEntry 
              .COLUMN_NAME))); 

Jedoch sind, fühle ich mich, als ob ich habe noch nie in der Produktion Code gesehen. Oder vielleicht sollte ich nur temporäre Variablen verwenden, um diese Zeile in mehrere Java-Anweisungen aufzuteilen?

EDIT Dank, das Problem referenzieren wurde nicht verwendet, um shmosel sollte für den Hinweis auf, dass die obige Verbindung als die Logik nichts zu tun hat.

+5

Ich würde es in mehreren Anweisungen trennen, viel einfacher zu debuggen. –

+0

Was haben Sie im verlinkten Post gesehen, um diese Formatierung vorzuschlagen? Es ist nicht einmal das gleiche Szenario. In diesem Post werden mehrere Argumente besprochen und Sie fragen nach geschachtelten Methodenaufrufen. – shmosel

+0

Solange Sie nicht für ein Unternehmen mit einem bestimmten Code-Standard arbeiten, genügt es, nur konsistent zu sein. Wenn Sie ein persönliches Projekt codieren, dann stellen Sie sicher, dass Sie es lesen können. Und wenn Sie für ein Unternehmen kodieren, stellen Sie sicher, dass es mit der aktuellen Codebasis des Unternehmens übereinstimmt. – Tacolibre

Antwort

0

Wenn ich Nest hätte, würde ich es tun, wie folgt:

titleText.setText(
     cursor.getString(
       cursor.getColumnIndex(
         MovieContract.TrailerEntry.COLUMN_NAME))); 

Doch diese aufgebläht wird ziemlich schnell. Im Idealfall möchten Sie eine Verschachtelung vermeiden und Ihre Anweisung mit temporären Variablen auflösen. Es macht den Code sauberer und deutlicher:

int columnIndex = cursor.getColumnIndex(
     MovieContract.TrailerEntry.COLUMN_NAME); 
titleText.setText(cursor.getString(columnIndex)); 

Natürlich gibt es verschiedene Möglichkeiten, die oben zu formulieren. Am Ende des Tages ist alles eine Frage des Geschmacks und vor allem der Konvention. Wenn Sie nach bestimmten Richtlinien suchen, berücksichtigen Sie Googles Java Style Guide oder The Elements of Java Style.

+0

Nun, ich würde eine Aussage so viel wie möglich auf einer Zeile halten, vorausgesetzt es ist nicht * zu * lang. Zum Beispiel - es ist ein bisschen schwer, es im Kommentarteil wegen der Formatierungsbeschränkung zu erklären -, würde ich es so behalten: 'int columnIndex = cursor.getColumnIndex (MovieContract.TrailerEntry.COLUMN_NAME);' –

+0

@MCEperor Ich verstehe deinen Standpunkt , aber die Definition von "zu lang" ist ziemlich subjektiv. Ich entschied mich für eine restriktivere Definition, teilweise wegen der SO-Post-Breite und um einen gemischten Ansatz für die Formatierung zu demonstrieren. – shmosel

+0

Ich stimme Ihnen zu. Viele Leute halten sich jedoch an die standardmäßige rechte Randlinie von Netbeans oder Eclipse, daher kann man sagen, dass es eine allgemeine Regel ist, wann eine Anweisung in mehrere Zeilen aufgeteilt werden sollte. –

Verwandte Themen