2017-11-26 11 views
0

Ich habe einen Kollegen, der auf diese Weise ternäre Operatoren verwendet (in JavaScript):Zuordnung innerhalb eines ternären Operators, ein Anti-Pattern?

var genderLabel = ''; 
isMale? genderLabel = 'Man' : genderLabel = 'Woman'; 

In C#, würde ich das nur tun.

Mein Kollege sagt, es ist eine Javascript-Kodierung Konvention ... ist das wahr? Ich bin kein Javascript-Experte und ich mag diese Sprache nicht ... Wenn ich Code überprüfe, konzentriere ich mich auf meine linke Seite, um einer variablen Initialisierung oder Zuweisung zu folgen, diese Art von Stil zwingt mich, die ganze Zeile zu lesen.

Ich unterhalte auch einen Java-Code von einem Ex-Mitarbeiter, er verwendet ternäre Operatoren auf die gleiche Weise. Ist das ein Anti-Muster? Ich denke, es sollte die gleiche Art und Weise durch den Compiler nicht zugelassen werden, in einer if-Anweisung nicht zulässig ist:

if(x = 2) 
{ 
    ... 
} 

Dies wird nicht in C# kompiliert.

+3

Das habe ich noch nie zuvor gesehen. Es ist nicht nur ein großes No-No, da es viel mehr Platz für Wiederholungen benötigt, es ist überladen und semantisch komisch. – Li357

Antwort

2

Mein Kollege sagt, es ist eine JavaScript-Kodierung Konvention ... ist das wahr?

Nr

Ist das ein Anti-Muster?

normalerweise von selbst eine Linie ist eine Aussage, aber dies

isMale ? genderLabel = 'Man' : genderLabel = 'Woman'; 

ein Ausdruck ist, mit einer Nebenwirkung der den Wert von genderLabel Einstellung. Ist das eine gute Übung? Ich weiß es nicht, aber wenn Sie denken, dass eine gute Praxis ist, dann werden Sie auch dies ermöglichen haben:

var a = 1, b = 2; 
b = [a][a = b, 0]; # swap a and b 

Ihr Kollege könnte genauso gut tun:

if(isMale) genderLabel = 'Man'; 
else  genderLabel = 'Woman'; 

die viel klarer .

Verwandte Themen