Wir führten diese Diskussion mit meinen Kollegen über innere Aufgaben wie:
%Vor%oder
%Vor%Sind diese akzeptabel oder sollten sie durch die folgenden ersetzt werden und warum?
%Vor%oder
%Vor%Die innere Aufgabe ist schwerer zu lesen und leichter zu übersehen. In einem komplexen Zustand kann es sogar übersehen werden und kann zu Fehlern führen.
z. Dies ist ein schwer zu findender Fehler, wenn die Bedingungsprüfung die Zuweisung eines Werts an die Variable verhindert:
%Vor% Wenn i == 2
falsch ist, hat die Punktvariable später keinen Wert.
if ( null == (point = field.getPoint()) )
Pros:
Nachteile:
point
nicht auf die Anweisung und ihren Codeblock ein. Nachteile überwiegen Profis 4/1, also würde ich es vermeiden.
Sie sollten vermieden werden. Die Reduzierung der Anzahl von Kennungen / Operationen pro Zeile erhöht die Lesbarkeit und verbessert die interne Codequalität. Hier ist eine interessante Studie zum Thema: Ссылка
Also unterste Zeile, aufteilen
%Vor%in
%Vor%erleichtert anderen das Verständnis und die Arbeit mit Ihrem Code. Gleichzeitig wäre es nicht das Ende der Welt, wenn ein paar innere Aufgaben in Ihrer Code-Basis verstreut wären, solange sie in ihrem Kontext leicht verständlich sind.
Es gibt sehr wenige Fälle, in denen innere Zuweisungen die Programmkomplexität reduzieren, zum Beispiel in if (x != null && y != null && ((c = f(x, y)) > 0) {...}
, und Sie brauchen die Zuweisung wirklich nur in dem Fall, wenn sie in der komplexen Bedingung ausgeführt wird.
Aber in den meisten Fällen verringern innere Zuweisungen die Lesbarkeit und sie können leicht übersehen werden.
Ich denke, innere Zuweisungen sind ein Relikt zu den ersten Versionen der Programmiersprache C in den siebziger Jahren, als die Compiler keine Optimierungen vorgenommen haben und die Arbeit zur Optimierung des Codes den Programmierern überlassen wurde. In dieser Zeit waren innere Zuweisungen schneller, weil es nicht notwendig war, den Wert von der Variablen erneut zu lesen, aber heute zählt dieser Punkt bei schnellen Computern und optimierenden Compilern nicht mehr. Trotzdem waren einige C-Programmierer an sie gewöhnt. Ich denke, Sun hat innere Zuweisungen an Java nur eingeführt, weil sie C ähnlich sein wollten und C-Programmierern den Wechsel zu Java erleichtern sollten.
Arbeiten Sie immer auf Code Lesbarkeit und nicht Schreibbarkeit . Das gleiche gilt für Sachen wie a > b ? x : y;
Es gibt wahrscheinlich viele Entwickler, die keine Probleme beim Lesen Ihres ersten Code-Snipet haben, aber die meisten von ihnen sind an den zweiten Snipet gewöhnt.
Die ausführlichere Form macht es auch einfacher, in einem Debugger wie Eclipse zu folgen. Ich teile häufig einzelne Zeilenzuweisungen auf, damit die Zwischenwerte leichter sichtbar sind.
Obwohl nicht direkt von OP angefordert, ist ein ähnlicher Fall Funktionsaufrufe, da Methodenargumente Zeilen speichern können, aber schwieriger zu debuggen sind:
%Vor%zeigt die Rückgabetypen nicht an und ist schwieriger zu durchlaufen. Es ist auch fehleranfälliger, wenn die beiden Werte vom selben Typ sind.
Ich finde keinen Schaden bei der Verwendung innerer Aufgaben. Es speichert wenige Codezeilen (obwohl ich sicher bin, dass es die Kompilierungs- oder Ausführungszeit oder den Arbeitsspeicher nicht verbessert). Der einzige Nachteil ist, dass es für jemand anderen umständlich erscheint.
Tags und Links java coding-style