Ist es schlecht innere Aufgaben zu erledigen?

7

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%     
Adel Boutros 27.06.2012, 08:24
quelle

11 Antworten

20

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.

    
Matzi 27.06.2012, 08:26
quelle
8

if ( null == (point = field.getPoint()) )

Pros:

  • Eine Zeile weniger Code

Nachteile:

  • Weniger lesbar.
  • Schränkt den Geltungsbereich von point nicht auf die Anweisung und ihren Codeblock ein.
  • Bietet keine Leistungsverbesserungen, soweit mir bekannt ist
  • Wird möglicherweise nicht immer ausgeführt (wenn eine vorausgehende Bedingung vorliegt, die zu false ausgewertet wird.

Nachteile überwiegen Profis 4/1, also würde ich es vermeiden.

    
Jeshurun 27.06.2012 08:34
quelle
6

Dies betrifft hauptsächlich die Lesbarkeit des Codes. Vermeiden Sie innere Zuweisungen, um Ihren Code lesbar zu machen, da Sie bei inneren Zuweisungen keine Verbesserungen erhalten.

    
Edge 27.06.2012 08:26
quelle
5

Funktional Not Necessarily. Für Lesbarkeit Definitely Yes

    
Akhil Dev 27.06.2012 08:27
quelle
5

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.

    
fedenusy 27.06.2012 08:37
quelle
3

Nun, die erste ist nicht genau innere Zuordnung, aber im zweiten Fall ... reduziert es Lesbarkeit ... aber in einigen Fällen wie unten,

%Vor%

es ist gut, es so zu schreiben

    
Ahmad 27.06.2012 08:27
quelle
3

In beiden Fällen ist das erste Formular schwerer zu lesen, und Sie möchten es ändern, wenn Sie den Wert in einem Debugger überprüfen möchten. Ich weiß nicht, wie oft ich "präzisen" Code beim Step-Debuggen verflucht habe.

    
sudocode 27.06.2012 08:28
quelle
3

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.

    
Johanna 27.06.2012 08:44
quelle
2

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.

    
GETah 27.06.2012 08:27
quelle
2

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.

    
peter.murray.rust 27.06.2012 08:32
quelle
1

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.

    
vedant1811 27.06.2012 08:27
quelle

Tags und Links