Ich habe eine Frage; bei einem if-Statement mit zwei atomaren Bedingungen, die mit && verknüpft sind, zählt jede Bedinungen ( if (b1 && b2) ). Ist es bei einer ||-Verknüpfung auch so? Im Falle, dass bei if (b1 || b2) b1 wahr sein sollte, wird die zweite Bedingungen nicht mehr geprüft.
Sehr simpel erklärt, vielen Dank :) Eine Frage: Wieso wird überhaupt zwischen Operanden und Operatoren unterschieden, wenn beide Werte zur Berechnung so oder so addiert werden?
Ich bedanke mich für die kurze und bündige Erklärung, Herr Hagel. Unterscheiden Sie nicht zwischen zyklomatische Zahl/Komplexität? Für die Zahl reicht ein +1 für die Komplexität jedoch +2. V(G) = |E| - |N| + 2 Ich hoffe es geht Ihnen gut. Machen Sie eigentlich noch weitere Videos?
Vielen Dank für Ihre Nachfrage. Die zyklomatische Zahl kommt ja aus der Graphentheorie, in der auch die zyklomatische Komplexität ihren Ursprung hat. Da mich jedoch nur die Komplexität von Programmen interessiert und ich diese auch ohne einen Graph zeichnen zu müssen, bestimmen kann, habe ich diesen Weg gewählt. Es geht mir ausgezeichnet - zumindest im Moment ;-) Da die Produktion von Videos sehr zeitaufwändig ist, gab es eine Pause. Ich plane jedoch weitere Videos.
Vielen Dank für diese Video! Eine andere Möglichkeit die McCabe Komplexität immer auf 1 bekommen zu können wäre der Ansatz "branchless Programming", was jedoch die eigentliche empfundene Komplexität und meisst wohl auch die Laufzeit deutlich erhöht. Gibt es eine Metrik die für solche Fälle besser geeignet wäre?
Sie bekommen in der Tat mit Branchless Programming die McCabe auf 1, aber alle Beispiele, die ich bislang gesehen habe verschleiern die Logik so sehr, dass ich diese Art der Programmierung nur im Notfall einsetzen würde. Da würde ich ein Halbzitat von Martin Fowler bemühen wollen: "Good programmers write code that humans can understand."
Passend zu gestriger Klausur 😜, wie wird denn ein const Member in C++ gesehen? Ich hätte so argumentiert, dass Konstanten nicht wirklich zu Klassen gehören und deshalb komplett aus der Metrik CV, OV (und damit NOA) fallen. Würden Sie hier zustimmen? Etwas knifflig, da ich mich nicht erinnern kann, das wir das mal besprochen hatten 🤔
@SwegEd Kurze Frage zu den Ergebinssen der Metrik. Wenn man in absoluten bit rechnet, würde es nicht Sinn machen, V = N * ceil(log2(eta)) zu verwenden?
Das ist nur eine theoretische Zahl. Es will niemand einen Rechner bauen, der genau das Programm ausführen kann. Daher sind auch Dezimalzahlen ok. Es geht nur um einen Vergleich.
Zähle ich bei mehreren Cases, die sich einen Zweig teilen, auch einfach die Cases oder den Zweig? e.g. switch (x) { case 1: case 2: macheWas(); break; } Z = 2 oder Z = 3 ?
Hallo Herr Hagel, erstmal: super cooles Format!😉 Nur eine kleine Frage: else-if-Ketten werden dann wahrscheinlich auch einzeln gezählt, und nicht das ganze if-(else-if)-else Konstrukt zusammen, wie beim if-else Konstrukt, oder? Also z.B. if (...) ... else if (...) ... else if (...) ... else ... = 3 Operatoren
Ich finde die Qualität der Illustrationen hat sich verbessert. Aber der Schwarz-weiß kontrast ist etwas stark. Vielleicht könnte man sich da an bewährte Farbkombinationen halten? (Blick auf dark-mode-themes von IDEs/Texteditoren.
Meinen Sie den Kontrast im Standard, also den grauen Hintergrund mit den schwarzen "Folien" oder die "Folien" an sich? Sollten also eher die Folien anders gestaltet werden, oder soll ich einen dunkleren Hintergrund wählen?
Meinst du den Kontrast schwarzer Code-Background, weiße Zeilen auf insgesamt weißer Folie? Ja, da käme ein dunklerer Gesamthintergrund vllt. etwas besser, finde ich aber so wie's ist nicht schlimm.
Das hat nur etwas mit der Zählweise zu tun. Die öffnende und die zugehörende schließende Klammer werden eben als ein Operator gezählt, wie if-else und do-while.
Vielen Dank. Klar hat die agile Vorgehensweise einige Vorteile. Ich bin schon an den Überlegungen, wie ich das Ganze aufbereite. Allerdings wird es wohl nicht das nächste Video.