ความคิดเห็น •

  • @markushuber512
    @markushuber512 4 ปีที่แล้ว +52

    Sehr gutes Video! Werd diese Tips auf jeden Fall mal ausprobieren. Bitte mehr zu Clean Codes.

  • @florian2119
    @florian2119 3 ปีที่แล้ว +53

    Bitte mehr zum Thema Clean Code sehr schön veranschaulicht

  • @replicant777
    @replicant777 3 ปีที่แล้ว +8

    Sehr gutes Video! Interessante Alternative zu den switch-case statements im letzten Beispiel wären übrigens die in Java12 (finalisiert in Java14) neu eingeführten switch expressions:
    String message = switch (ziffer) {
    case 0 -> "Null";
    case 1 -> "Eins";
    case 2 -> "Zwei";
    case 3 -> "Drei";
    ...
    }
    System.out.println(message);

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว +1

      Ui, die kannte ich noch gar nicht! Da mache ich vlt mal ein Video zu!

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว +2

      Dürfte ich deinen Kommentar dann ggf. im Video zeigen? Ich weiß aber noch nicht, ob und wann ich dazu ein Video mache.

    • @replicant777
      @replicant777 3 ปีที่แล้ว

      @@Florian.Dalwigk klar, kein Problem!👍

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว +1

      Super! Danke :)

  • @outroddet_6260
    @outroddet_6260 3 ปีที่แล้ว

    Sehr nices Video! Die Dinge hab ich tatsächlich auch schon bei mir erkannt und verändert!

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว +1

      Klasse! Und falls man nicht alles auf Anhieb ändern kann: Lernen ist manchmal ein etwas langwieriger Prozess (vor allem, wenn man bestimmte Coding Hobbits schob seit Anbeginn seiner Karriere hat).

  • @IAmFeO2x
    @IAmFeO2x 3 ปีที่แล้ว +2

    Gutes Video! Das Ganze ist übrigens allgemein unter dem Namen "Guard Clauses" bekannt, zuerst veröffentlicht von Martin Fowler:
    refactoring.com/catalog/replaceNestedConditionalWithGuardClauses.html

  • @bluekernel2448
    @bluekernel2448 4 ปีที่แล้ว +13

    Hi, ich wollte dich informieren dass ich immer noch deine nicen Vids schaue, vor kurzem hies ich auf ytb noch irgendwas mit esport oder so...
    auf jeden fall habe ich jetzt einen geilen club gefunden und lerne jetzt richtig programmieren ((((((((:::::::::::::....

    • @Florian.Dalwigk
      @Florian.Dalwigk 4 ปีที่แล้ว

      Es freut mich, dass du noch an Bord bist :)
      Sehr schön! Was lernst du dort für eine Programmiersprache?

  • @ueberhaupt.niemand
    @ueberhaupt.niemand 3 ปีที่แล้ว +1

    Haha extra gewartet, um den tausendsten Like auf dieses Video zu geben 😏👍 übrigens ein gutes Video

  • @Ciddyism
    @Ciddyism 3 ปีที่แล้ว

    Sehr schön. Sehr richtig.
    Den allseits beliebten Ternary "return x ? true : false;" (statt "return x;") hast du zwar nur indirekt (in if-Form) angesprochen, aber egal.
    Dass "return Ausdruck;" schneller sein kann als als "if (Ausdruck) return true else return false;" hast du verschwiegen, aber das ist inzwischen ja fast egal - solange der Compiler den Nutzer unterstützt und das nachoptimiert, um Lücken in der Pipeline zu vermeiden.
    Durch Java hast du wahrscheinlich den Missbrauch von switches vermieden. Ich hatte da neulich ein Gespräch mit nem Neuling über ungefähr sowas:
    switch (true) {
    case v == "a": .... break;
    case t == 1: ... break;
    }

  • @barkeeper7887
    @barkeeper7887 4 ปีที่แล้ว +9

    Stimmbruch ist on fleek

    • @Florian.Dalwigk
      @Florian.Dalwigk 4 ปีที่แล้ว +4

      Da sollte ich eigentlich schon längst draußen sein :D

    • @barkeeper7887
      @barkeeper7887 4 ปีที่แล้ว

      @@Florian.Dalwigk xD

  • @BenjaminBuch
    @BenjaminBuch 3 ปีที่แล้ว +2

    Statt Switch-Case kann man in vielen Fällen auch eine Map einsetzen. In vielen Sprachen ist das Switch Case Statement sehr stark beschränkt, da ist ein Map Datentyp eine gute und effiziente Alternative und oft ist es auch übersichtlicher, da man zum Beispiel die breaks einspart. Hängt aber letztlich vom konkreten Anwendungsfall an, was besser ist.

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว +1

      Gute Alternative!

    • @harald4game
      @harald4game หลายเดือนก่อน

      Maps sind halt vergleichsweise langsam und vom compiler nicht optimierbar.

  • @Bynx44
    @Bynx44 3 ปีที่แล้ว +1

    Mehr clean code Videos wären super!! :D

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว

      Ich überlege mir, ob ich da wirklich noch ein paar Teile zu drehe :)

  • @multigladiator384
    @multigladiator384 4 ปีที่แล้ว +6

    Ganz genau so wie ab 3:25 ! Dazu gibt es von Brian Kernighan ein Buch "Elements of Programming Style" und eine Vorlesung als Video. In diesem zeigt er mit vielen Beispielen wie man guten Code schreibt und wie nicht. Unter anderem wird da auch genau das behandelt wie hier im Video.
    th-cam.com/video/8SUkrR7ZfTA/w-d-xo.html&feature=share

    • @Florian.Dalwigk
      @Florian.Dalwigk 4 ปีที่แล้ว +1

      Danke für die Enpfehlung! Das werde ich mir mal anschauen. :)

  • @lollo4711
    @lollo4711 3 ปีที่แล้ว +2

    @3:23 - Ich bin auch ein Fan von Short-Circuit exits (return) geworden. Unter VB6 hat man immer am Ende einer Function den Return-Value gesetzt (weil die syntax eine Zuweisung über den Function-Name wollte) - oder man hat einen Default-Wert am Anfang der Function gesetzt, dann konnte man auch mit EXIT FUNCTION raus. Daher neige ich immer noch dazu, Short-Circuit RETURNs im CODE mit Kommentar dahinter zu kennzeichnen ; )

  • @jakobseitz1176
    @jakobseitz1176 3 ปีที่แล้ว +5

    Meiner Meinung fehlt da noch ein ganz wichtiger Tipp, oft lässt sich ein Switch-Case (egal ob als If oder Switch-Case geschrieben) mit eine Generalisierung (Vererbung) vermeiden
    Ist meiner Erfahrung nach meistens die bessere Wahl

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว +3

      Hättest du da mal ein konkretes Beispiel?

    • @DonDerBalken
      @DonDerBalken 3 ปีที่แล้ว +1

      Eine weitere Möglichkeit If-Abfragen zu vermeiden ist zum Beispiel die Verwendung von Sealed Classes mit when. Finde das bei Kotlin extrem cool: kotlinlang.org/docs/sealed-classes.html#try-sealed-interfaces-and-package-wide-hierarchies-of-sealed-classes

    • @jakobseitz1176
      @jakobseitz1176 3 ปีที่แล้ว +1

      @@Florian.Dalwigk
      Das ist eigentlich immer der Fall wenn man je nach Typ einen anderen Code ausführt. Der Artikel enthält ein ganz gutes Beispiel:
      refactoring.guru/replace-conditional-with-polymorphism

    • @RealKugor
      @RealKugor 3 ปีที่แล้ว +1

      @@jakobseitz1176 das ist eine coole Webseite

  • @Holzf43ller
    @Holzf43ller 3 ปีที่แล้ว +2

    Moin moin, erstmal geiles Video, dass es unter deutschsprachigen Programmierern sowas wie Clean Code gibt wusste ich gar nicht, das scheint im engischen Raum schon ziemlich "verbreiteterer" zu sein. Dafür schon einmal Kudos.
    Zu Switch-Case-Anweisungen ist zu beachten, dass diese auch nur einfachere If-Anweisungen sind. Klar kann man das ganze auch Overengineeren, aber ich habe selbst festgestellt, dass nach nen paar Wochen und Monaten einen ein Switch-Case ziemlich in den Arsch beißen kann, vor allem wenn er in einem Modul steckt, welches von woanders benutzt wird.
    Einfach, wie hier mag das noch gehen, wird aber ziemlich schnell unübersichtlich. Ich schreibe mir dafür dann einfach eine Klasse mit der entsprechenden Klassenfunktion und behandle darin alle Fälle, so muss ich dann nicht alle Switch-Cases durcharbeiten wenn sich etwas ändert.
    In diesem Fall steht dem natürlich nichts im Weg, aber ich meine hinten raus. Wenn man etwas komplexer geworden ist.
    MfG

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว +1

      Vielen Dank für dein Feedback :)

  • @xsold
    @xsold 3 ปีที่แล้ว +16

    Gut, aber man sollte sich an die Allgemeinen Java conventions halten.

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว

      Wenn das viele machen, ist es sinnvoll.

    • @xsold
      @xsold 3 ปีที่แล้ว

      Stimmt auch wieder. Wenn es niemand macht, dann war diese Vereinbarung völlig umsonst.

  • @schnasndasn1504
    @schnasndasn1504 3 ปีที่แล้ว

    Das witzige ist, dass z.T. der Java Code vom Compiler automatisch nach deiner Regel "Error handling first" umgebaut wird. Ist mir letztens aufgefallen, als IDEA eine Klasse einer unserer internen Libraries decompiliert hat.

  • @TsoiIzAlive
    @TsoiIzAlive ปีที่แล้ว

    Kurze Frage zu dem Erklärten Beispiel bei 3:50, müsste man das upload_to_server() nicht in den else teil beim 2. If block einfügen? Weil sonst würde der doch einfach trotzdem uploaden oder?

    • @danielf.7151
      @danielf.7151 ปีที่แล้ว

      Durch den return Befehl wird die Funktion beendet, egal, was dahinter noch kommt.

  • @GradientTim
    @GradientTim 3 ปีที่แล้ว +1

    Bei 1:15, würde nicht die .isEmpty() Methode besser passen? Weiß nicht was besser ist, die "null" Überprüfung oder die "isEmpty()" Überprüfung.

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว +1

      Geht auch

    • @TinyTeaKettle
      @TinyTeaKettle 3 ปีที่แล้ว +1

      Kannst du denn garantieren, das die Felder denn immer initialisiert sind? Ansonsten fliegt dir .isEmpty() mit einer NullPointerException um die Ohren.

    • @GradientTim
      @GradientTim 3 ปีที่แล้ว

      @@TinyTeaKettle Da hast du natürlich recht ja. Bin aber davon ausgegangen, dass die Strings einen Wert haben.

    • @TinyTeaKettle
      @TinyTeaKettle 3 ปีที่แล้ว +1

      @@GradientTim In dem Fall, wovon man selten ausgehen sollte, macht eine Überprüfung auf null sowieso nie Sinn. Das wäre ja dann das gleiche wie ein if(true) bzw. if(false)

  • @MiauRizius
    @MiauRizius 3 ปีที่แล้ว +4

    Ich habe bisher immer nach dem Motto "Fehlerbehebung hat Vorrang" mit If-Anweisungen gearbeitet. Mein Freund mit dem ich öfter programmiere macht das nicht, das triggerd mich immer xD

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว +1

      Das fällt ihm früher oder später auf die Füße.

    • @AndreasDelleske
      @AndreasDelleske 3 ปีที่แล้ว

      Ich mach das auch, erst alles prüfen und return / throw. Ich hab fast keine else und fast jedes if hat ein return, ich nutze viel continue und break...
      Kollegen die das lesen bekommen sofort mit was die Methode nicht macht. Das enttäuscht falsche Erwartungen. Nach meinem Gefühl sind falsche Annahmen die größte Quelle von schwer zu entdeckenden Fehlern.

  • @berthold64
    @berthold64 2 ปีที่แล้ว

    oder Sie können assoziative Maps wie folgt verwenden anstatt switch statement (Bespiel im Lua):
    local map = { ["A"] = 10, ["B"] = 20, .... };
    local input = "Hallo";
    local output = map["Hallo"];
    if(output == nil) then
    print("Fehler: ungültige eingabe");
    return;
    end

  • @mastermuc0
    @mastermuc0 3 ปีที่แล้ว +1

    Gibt es noch mehr Clean Code videos? Super erklärt!

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว

      Ich plane aktuell einen zweiten Teil 😉

  • @ThomasBensler
    @ThomasBensler 3 ปีที่แล้ว

    "Schalteranweisung" ... :D . Hatte damals an der Uni einen (ziemlich alten) Prof, der immer "Kellerspeicher" gesagt hat, wenn er stack meinte. Hat ne Weile gebraucht, bis das alle Studis das gerafft hatten ...

  • @svenwaibel7007
    @svenwaibel7007 3 ปีที่แล้ว

    Ist bei 3:55 die if nicht: if (!file.isMP3() || ! file.isPDF())
    Sonst breche ich doch ab, wenn die Datei keine MP3 und keine PDF ist, das geht aber ja nicht, denn sie ist entweder MP3 oder PDF. Oder sitz ich gerade auf dem Schlauch?

    • @cedrichartz390
      @cedrichartz390 3 ปีที่แล้ว

      Die if-Anweisung bricht nur ab, wenn die Datei weder mp3 noch pdf ist. Es werden so nur mp3 und pdf Dateien hochgeladen. Das ist also richtig.

    • @svenwaibel7007
      @svenwaibel7007 3 ปีที่แล้ว +1

      @@cedrichartz390 Hast natürlich Recht, ich war gestern echt umnachtet. Heute angeschaut und mich über meinen eigenen Kommentar gewundert :)

  • @monoflop2937
    @monoflop2937 3 ปีที่แล้ว

    Dem würde ich so zustimmen ;-)

  • @GnomeEU
    @GnomeEU 10 หลายเดือนก่อน

    Negationen lesen sich immer recht schwer.
    Also möglichst immer die positiv form verwenden wenn irgendwie möglich.
    If allowedFileTypes.Contains(...) then Upload to server ... oder
    if (mp3 || pdf) then Upload to server

  • @toolstime5136
    @toolstime5136 3 ปีที่แล้ว

    Clean code ist ein wichtiger Ansatz. Aber gleichzeitig die Konventionen nicht einzuhalten finde ich dann schon recht unschön.
    Funktionen schreibt man in camel case und für gewöhnlich in Englisch. Eine Funktion die ein boolean zurück gibt beginnt mit "is". Besser als mit != null zu vergleichen ist den konkreten Typ zu wählen, was in der regel === undefined ist.

  • @michaelbuchholz992
    @michaelbuchholz992 3 ปีที่แล้ว +1

    "Sie sind aus der Programmierung nicht mehr wegzudenken und tauchen an vielen Stellen auf"
    Ja, Programmierung ist ein wundervolles Abenteuer.
    Das erinnert mich an die Zeit, als ich auf dem C 64 die Programmiersprache "C" gelernt habe und total stolz darauf war, das Prinzip von Funktionen verstanden zu haben und auch schon verschachtelte Funktionsaufrufe genutzt habe. Da habe ich mir zur Belohnung auch immer Marshmallows geröstet...
    Ich hab ja bis dahin nur in Assembler programmiert und dort habe ich das, was Compiler und Linker tun, alles selber machen müssen. (wir hatten ja nichts)
    Ach, was würde ich mir wünschen, würden die zwei ersten Semester Informatik daraus bestehen, einfache Funktionen wie Multiplikation und Division von Zahlen, die nicht in die CPU-Architektur passen, schreiben zu müssen - also z.B. 128 Bit lange Zahlen auf einer 8-Bit Architektur!
    Man braucht nämlich auch heutzutage noch Kalkulationen mit Zahlen, die länger sind als 64 Bit - Weitaus länger! (RSA, Diffie Hellmann, Myer's Bit-Vector Algorythmus, u.v.a.)
    Zum Ende des zweiten Semesters müsste die abschließende Prüfung daraus bestehen, die RSA Verschlüsselung oder den Diffie-Hellmann Schlüsselaustausch, den Huffmann- oder Arithmetischen Kompessor für eine Z80 CPU in Assembler zu programmieren.
    Wer das übersteht, weiß wie Computer funktionieren und nur die sollen weitermachen dürfen! Der Rest kann ja immer noch Chemie, BWL oder Hauswirtschaft studieren...
    Ich möchte mal ein "Clean Code" Video sehen, daß für PostScript gemacht wurde :-D :-D :-D

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว

      Das ist eine tolle Idee 😄

    • @kurt773
      @kurt773 3 ปีที่แล้ว

      In den 80’ern Basic und Assembler auf C64 war lecker ;) C hätte damals zu sehr gerne gehabt.

  • @andik70
    @andik70 3 ปีที่แล้ว

    irgendwie finde ich den Code bei 2:00 klarer als z.B. 2:19 zu lesen.

  • @entjic5408
    @entjic5408 3 ปีที่แล้ว +1

    Hey, schönes Video c: Wer sich damit ausführlicher beschäftigen will dem kann ich „Clean Code“ von Robert C. Martins empfehlen

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว

      Diese Empfehlung empfehle ich ebenfalls 😉

  • @lebusiness2847
    @lebusiness2847 3 ปีที่แล้ว

    Statt dem Schalterblock wäre in dem Fall ein Dictionary sauberer gewesen und dann einfach print(dict[ziffer])

  • @minastaros
    @minastaros 3 ปีที่แล้ว +1

    Tipp für den letzten Fall: lookup table

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว

      Guter Tipp!

    • @michaelbuchholz992
      @michaelbuchholz992 3 ปีที่แล้ว

      Der letzte Fall ist ja nur stellvertretend für Dinge, die Wirklich einen Switch benötigen - z.B. wenn man keine fortlaufenden Zahlen hat, sondern mal eine 1, eine 2 und die 255...
      Den gezeigten Fall hätte ich mit einer Liste/Array gelöst.
      Eine weitere Möglichkeit, wenn man eine vollständige (oder Lückenfreie) Liste hat und anhand derer unterschiedlichen nicht-trivialen Code ausführen möchte, wären Funktionspointer in einer Liste oder anonyme Funktionen - wie auch immer die in den unterschiedlichen Sprachen genannt werden.
      Ich kann gerade fühlen, wie einige Leute nun zu weinen anfangen, weil eben diese Methoden nicht mehr ganz so leicht zu lesenden Code erzeugen.
      Aber wenn für Euer Programm folgendes Soran-Zitat aus "Star Trek: Treffen der Generationen" zutrifft "die zeit ist das feuer in dem wir verbrennen", werden Knaben zu Männern und Clean-Code wird zu einem Hindernis, Eure Ziele zu erreichen!

  • @florian2119
    @florian2119 3 ปีที่แล้ว +2

    Bei 2:0 Braucht man kein IF man kann das Statment direkt zurück geben

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว

      Siehe 2:04

    • @keiichitw
      @keiichitw 3 ปีที่แล้ว +2

      Wenn man keine 4 Sekunden warten kann zum Klugscheißen

    • @RealKugor
      @RealKugor 3 ปีที่แล้ว

      @@keiichitw hahaha alter du bist der youtube kommentat comedian 😂

  • @berndeckenfels
    @berndeckenfels 3 ปีที่แล้ว

    Man sollte noch erwähne dass lokale result Variablen die in diesem verschachtelten branches gesetzt werden (oder initial null wenn kein Fall zutrifft) das ganze noch verschlimmern und öfters mal zu null Rückgabe und dann nullpointerexceötkons. Führen. We nn man auf null Rückgaben nicht verzichten will, dann wenigstens in allen guards explizit „return null;“ schreiben, und nicht „Objekt result = null; if(guard()) return result;}
    In den Fall hilft es auch Variablen generell nicht auf null zu initialisieren wen man davon ausgeht alle Fälle in if/else abzudecken.

  • @juliusanon
    @juliusanon 3 ปีที่แล้ว +1

    Schade, dass es in Python keine switch Funktion gibt :/

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว +1

      Das stimmt! Man kann die aber so ähnlich bauen.

    • @michaelbuchholz992
      @michaelbuchholz992 3 ปีที่แล้ว

      Gibt es in Perl auch nicht. Hat mich nie gestört. Dafür gibt es in Perl das "elsif", mit dem man switch recht gut ersetzen kann.

    • @ueliriegg
      @ueliriegg 3 ปีที่แล้ว

      lässt sich in python ziemlich einfach mit einem dictionary lösen

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว

      Dazu habe ich übrigens schon ein Video gemacht: th-cam.com/video/sLBnFWlPVok/w-d-xo.html

  • @saecula2391
    @saecula2391 ปีที่แล้ว

    sehr schönes Video .. meist kommen die Anforderungen im echten Entwickler-Leben aber zeitversetzt, dh. man hat eine if-Anweisung und muß weitere voneinander abhängige Bedingungen einbauen ohne dabei bestehenden funktionieren Code zu gefährden (da auch niemand da ist der die Änderungen am Ende testet *g) .. dh. man geht auf Nummer sicher (und nicht nach Schönheit des Codes) um den Produktiv-Betrieb nicht zu gefährden ... dann entsteht zwangsläufig "historisch gewachsener verschachtelter" Code .. den man aber nach 3-4 Jahren noch lesen kann wenn wenn man sich ein paar Kommentare dazu schreibt

  • @marcusreinicke
    @marcusreinicke 3 ปีที่แล้ว

    Tolles Video,
    aber mit dem Switch bin ich nicht einverstanden.
    In Clean Code sollte man auf Switch cases verzichten.
    Switch cases machen den den Code u.u. extrem unlesbar.
    Zusätzlich widersprechen sie, dem Prinzip, dass jede Methode nur eine Aufgabe haben darf.
    Mein Tipp
    Switch cases durch Dictionary ablösen. Wesentlich sauberer und verständlicher.
    Vor allem wenn man durch Schnittstellen entkoppelt.

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว

      Da hat Python alles richtig gemacht. Hier gibt es NUR Dictionaries und keine Switch Cases.

  • @__-kd8oz
    @__-kd8oz 3 ปีที่แล้ว

    Guten Tag

  • @jhonnatanwalyston6645
    @jhonnatanwalyston6645 3 ปีที่แล้ว +1

    Why was thia recommended to me? I don't speak german

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว

      I don't know. YT algorithm is an enigma.

  • @Pnunkll
    @Pnunkll 3 ปีที่แล้ว

  • @uzuark7221
    @uzuark7221 3 ปีที่แล้ว

    Instagram ist nice

  • @tomte2283
    @tomte2283 3 ปีที่แล้ว

    4:24 Python gerade: 👁️💧👄💧👁️

  • @davidadamson1588
    @davidadamson1588 ปีที่แล้ว +1

    Was ich mir eigentlich darunter vorstelle, wenn es um Clean Code und if-Anweisungen geht: if-Anweisungen so weit es geht durch polymorphe Methodenaufrufe ersetzen. Und if-Anweisungen hauptsächlich in Factories benutzen, um zu entscheiden, welche polymorphe Implementierung erzeugt werden soll.
    Resultat: Komplexe if-Anweisungen verschwinden von ganz allein und verteilen sich auf unterschiedlich ausgeprägte Unterklassen. Zudem wird das Open-Closed-Prinzip gefördert 🔥
    (vgl. Martin, 2009: Clean Code, S. 299)

  • @Tabaskuh
    @Tabaskuh 3 ปีที่แล้ว

    Einfach kein if/else benutzen, dann hat man die Probleme nicht. Ja, etwas provokant, aber meistens geht es auch ohne (-:

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว

      Hehe ... ja, man kann wirklich oft darauf verzichten.

    • @Tekay37
      @Tekay37 3 ปีที่แล้ว

      Gar nicht provokant, sondern genau richtig. In meinem Job tue ich genau das: ich versuche, if so oft es geht zu vermeiden und else benutze ich nie. Sehr viele if(-else) Anweisungen existieren nur, weil der Programmierer keine neue Klasse erstellen wollte, obwohl das die bessere Option gewesen wäre. Es gibt dazu hier auf YT einen weunderbaren Vortrag von Sandi Metz ("all the little things"), in der sie das "Gilded Rose" Kata bespricht. Amfang des Vortrages steht eine if-else-Hölle, die keiner mehr durchblickt, am Ende stehen viele kleine Objekte und leicht verständlicher code, der sich einfach um neue Funktionalität erweitern lässt.

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว

      Poste gerne mal den Beitrag.

    • @Tekay37
      @Tekay37 3 ปีที่แล้ว

      @@Florian.Dalwigk
      Der hier ist es:
      th-cam.com/video/8bZh5LMaSmE/w-d-xo.html
      "Nothing is something" geht in bisschen in die gleiche Richtung (gegen if/else), behandelt aber einen anderen Fall, der für viele if/else im code sorgen kann:
      th-cam.com/video/OMPfEXIlTVE/w-d-xo.html

    • @Tabaskuh
      @Tabaskuh 3 ปีที่แล้ว

      @@Tekay37 Das ist schon richtig, aber ohne if geht es halt leider nicht. Deshalb mein "provokant" (-:

  • @michelbruns
    @michelbruns 3 ปีที่แล้ว

    Wenn man
    if{
    }
    Benutzt und nicht
    If
    {
    }

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว

      Ich sehe es genau anders herum!

    • @TinyTeaKettle
      @TinyTeaKettle 3 ปีที่แล้ว

      Und letztendlich gilt doch im Normalfall: Es ist das richtig, was die Firma vorgibt. Stichwort Styleguides.

  • @Mabowle
    @Mabowle 3 ปีที่แล้ว +1

    Das letzte Beispiel gehört auf jeden Fall mit einer Mapping-Tabelle (z.B. assoziatives Array, dictionary) gemacht, bitte weder if noch switch für sowas...

  • @Mantikor333
    @Mantikor333 3 ปีที่แล้ว

    Leider wird (bei uns zumindest) auch heute noch auf der MISRA Regel "Nur ein return statement am Ende einer jeden Funktion" herumgeritten. Ich kann den Sinn dieser veralteteten Regel in der heutigen Zeit einfach nicht mehr erkennen und bin ebenso deiner Meinung, dass der Code so besser zu lesen ist. Selbst mit einer lokalen Variable für einen return code entstehen redundante Codezeilen die für den Betrachter unnötig sind.

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว

      Ja, diese Regel sorgt nicht selten dafür, dass man unsinnige Workaround drumherum bauen muss.

  • @hansdietrich83
    @hansdietrich83 3 ปีที่แล้ว +2

    "If anwesungen sind aus der Programmierung nicht mehr wegzudenken"
    ich glaub mein Hirn schimmelt.
    If Anweisung sind die Definition von Digitaltechnik. Jeder transistor ist eine if Anweisung. Programme funktionieren nur wegen if Anwesungen. Ohne conditional jump ist eine maschiene nicht Turing komplett.
    Du hättest diesen Satz über jedes Andere feature sagen können, nur nicht über if Anweisungen...

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว +3

      Und wo ist jetzt das Problem, dass man überall if-Abweisungen braucht?

    • @hansdietrich83
      @hansdietrich83 3 ปีที่แล้ว +1

      @@Florian.Dalwigk der ganze Satz macht keinen Sinn.
      "Zinken sind von modernen Gabeln nicht mehr wegzudenken" macht auch keinen sinn...

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว +1

      Ok, wenn du das so siehst.

    • @okdoomer620
      @okdoomer620 3 ปีที่แล้ว +1

      @@hansdietrich83 Naja, ganz so ists auch nicht, man kann Verzweigungen auch per switch case umsetzen, wie im Video gezeigt, per pattern matching oder if expressions, ternärem operator usw... chill mal

    • @keiichitw
      @keiichitw 3 ปีที่แล้ว +1

      Beispiel Kommentar um Leuten zu zeigen, was man unter ,,Deutsch“ versteht. Einfach ein Stock im Arsch zu haben ^^

  • @Simplicity4711
    @Simplicity4711 3 ปีที่แล้ว

    Eigentlich ganz gutes Video. Aber Switch Case würde ich keinem mehr empfehlen. Das ist ein Relikt, das es zu vermeiden gilt (gerade das unschöne explizite break; welches erforderlich ist und der implizite Fallthrough macht switch case ziemlich hässlich). Besser auf ein Mapping zurückgreifen.

  • @jensspahn2511
    @jensspahn2511 3 ปีที่แล้ว

    4:05 lol^^
    nur schwarzer bildschirm

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว +1

      ? 😅

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว +1

      Ja mei 😅

    • @jensspahn2511
      @jensspahn2511 3 ปีที่แล้ว +1

      @@Florian.Dalwigk alles gut : ) deine videos sind sehr gut und hochwertig man lernt echt was
      Eine Frage hast du dieses eine Hacker Mythen Cybersicherheit wegen den ganzen anderen Vorfaellen runtergenommen?

    • @Florian.Dalwigk
      @Florian.Dalwigk 3 ปีที่แล้ว +1

      Ja, leider. Ich werde das Video aber nochmal YT freundlich aufnehmen und hochladen ;)

  • @marcotroster8247
    @marcotroster8247 ปีที่แล้ว

    Ein weiterer Tipp: Wenn man sicherstellen kann, dass die Funktion immer mit validen Argumenten aufgerufen wird, kann man die Fehlerbehandlung weglassen 😉 Hört sich erstmal super banal an, aber die die mehr Erfahrung haben, wissen wovon ich rede 😂 Log-and-Throw Pattern at it's best 🙃