Ist dieser Code aus semantischer Sicht sinnvoll - Typescript?

6 Antworten

Ob es für typescript sinnvoll ist, weiß ich nciht - sieht aber logisch aus.

An sich macht der Code folgendes:

let a: number = 14;
// a = 14

a++;
// a = 15

a += 4;
// a = 19

a--;
// a = 18

a--;
// a = 17

a = (a - (a%2)) / 2;
// a = (17 - (17%2)) / 2:
// a = (17 - 1) / 2 = 16 / 2 = 8

a += a;
// a = 16

a = a - 2;
// a = 14

Du fragst nach "Semantik". Da kommt bei mir erstmal die übergeordnete Frage auf, warum ein Programmierer sowas überhaupt in dieser Abfolge in einen Code schreiben wollen würde. Besser wäre es, als Programmierer erstmal Termvereinfachung zu betreiben und dann nur noch einen "zusammengestutzten" Term zu implementieren.

Faustregel: man sollte nur Dinge zur Laufzeit rechnen, die man zur Laufzeit auch rechnen muss. Was man vorab vorberechnen bzw. abstrahieren kann, sollte man auch vorab tun. Denn dann kommt performanterer und lesbarerer Code raus, als wenn man irgendwelchen Statement-Kuddelmuddel produziert, wo mehrere Statements in Folge sich im Zweifelsfall in ihrer Wirkung sogar wieder aufheben.

  1. a=14
  2. a=a+1=14+1=15
  3. a=a+4=15+4=19
  4. a=a-1=19-1=18
  5. a=a-1=18-1=17
  6. a=(a-(a%2))/2=(a-1)/2=(17-1)/2=16/2=8
  7. a=a+a=8+8=16
  8. a=a-2=16-2=14
Woher ich das weiß:eigene Erfahrung

Wenn ich mich nicht verrechnet habe kommt da 14 raus.

Wo liegt denn dein problem? rechnest halt einfach alle schritte hintereinander aus.

Sinnvoll ist ziemlich relativ. Geht sicher kürzer.

es macht kein sinn so ein Quark zu schreiben, da am Ende eh wieder 14 raus kommt. Zeile 2-8 ist nicht nur sinnfrei, sondern belastet auch unnötigerweise Ressourcen.