Code-Refactoring: Erkenne schlechten Code (Code Smells) und werde besser! ModelMyMind https://www.youtube.com/watch?v=Oc5gU6UCkuk Transkript (automatisch erstellt) 0:00 hallo zusammen herzlich willkommen beim model marie meint in diesem video möchte ich mit euch über java programmierer konvention sprechen beziehungsweise 0:09 schlecht strukturierten quellcode bzw codes mail zeigen um wie man den kot ein bisschen in fällen lieber schreiben sollte co2 zu bezeichnen also 0:18 funktionierenden aber schlecht strukturierten quellcode sie deklarieren konstrukte in der programmierung die ein reh factoring nahelegen im ersten 0:27 beispiel betrachten wir ein problem zum thema in varianz in varianz bedeutet das eine größe bei veränderten bedingungen unverändert bleibt diesen aspekt möchte 0:37 ich dir gerne im jahr barcode vorstellen dafür betrachten wir eine beispiel methode mit einer f bedingung die einen integer wert prüft unsere abhängigkeit 0:45 der prüfung einen wert zurück gibt nun gehen wir sowohl wenn die bedingungen zutrifft einen ganz bestimmten wert zurück als auch wenn die bedingungen 0:52 nicht zutrifft im konkreten wenngleich 1 ist dann gehen wir bild zurück und wenn die bedingungen nicht zutrifft gehen wir ebenfalls b zurück das ist ein coach 1:02 ziel der nicht so optimal ist und dementsprechend verbesserungspotenzial hat was wir an der stelle stattdessen machen können ist das via zurückgeben 1:10 und das sollten wir auch so machen das nächste thema das ich des öfteren wahlprogramm ihr anfängern beobachte ist die art wie sie auf bedingungen 1:17 programmieren oft sehe ich das 211 bedingungen folgendermaßen hintereinander geschaltet werden es wird die erste event anweisung geschrieben 1:25 und die zweite version trägt unter die erste geschlossene geschäfte kann man gesetzt die ava konvention besagt aber dass die 211 anweisung in die nächste 1:34 zeile ein gerückt werden sollte deswegen machen wir das auch an dieser stelle der code ist am klarsten wenn die der anweisung in einer eigenen zeile 1:43 geschrieben wird trotzdem ist das auch ein übliches muster in derselben zeile einer f anweisung zu schreiben sowie ihre resultierende wenn anweisung wenn 1:52 jedoch ein elf in der gleichen zeile wie die schließende geschweißte klammer einer vorangehenden anweisung als oder falls anweisungen steht ist 2:00 dies entweder ein fehler weil zum beispiel ein elz fehlt oder die einladung zu einem zukünftigen fehler da sich der leser nicht sicher sein kann ob 2:08 die beiden blöcke zusammen gehören hinter die geschäfte kamera darf allerdings auch eine elz anweisung stehen oder eine elf anweisung zum 2:17 beispiel so wie ich es hier darstelle der nächste punkt umfasst den umgang mit statements which kann aus verschiedenen gründen einer strahlt klausel enthalten 2:26 um unerwartete fälle zu behandeln und um zu zeigen dass alle relevanten fälle richtig berücksichtigt werden aus gründen der lesbarkeit und um einen 2:35 entwickler zu helfen da stand halten einer strip anweisung schnell zu finden wird empfohlen die default an das ende der switch anweisungen zu setzen meine 2:44 einschätzung es auch dass wir immer eine default anweisung definieren sollten auch wenn es im kontext nicht immer sinnvoll erscheint beim programmieren 2:51 geht es nicht nur darum dass wir einige scheine berücksichtigen es dient auch als dokumentation durch das schreiben von default mit einem kommentar wie hier 3:00 ist nichts zu tun erhöhen wir die lesbarkeit unseres todes als nächstes betrachten die konstrukteuren abstrakter klassen was programmie anfänger selten 3:09 wissen ist das abstrakte klassen keine öffentlichen konstrukteuren haben sollten konstrukteuren abstrakter klassen können nur ein konstrukt ohren 3:16 ihrer unterklassen aufgerufen werden es gibt wirklich überhaupt kennen sind sie öffentlich zu machen da erinnern wir das auch in unserem code beispiel in 3:24 projekten des öfteren sehe ich auch das redundante bleibt der methoden geschrieben wird dies führt dazu dass identische implementierung von methoden 3:34 im kot vorzufinden sind wenn zwei methoden dieselbe implementierung haben was entweder ein fehler war etwas anderes beabsichtigt war oder es ist ein 3:43 duplikat kann aber die leser des chores verwirrend sein im letzteren fall sollte eine implementierung die andere methode aufrufen das werden wir eben hier machen 3:52 indem wir die berechnungsmethode aufrufen und dessen rückgabe wert unmittelbar zurückgeben zu guter letzt möchte ich mit euch über control 4:00 charakter sprechen nicht codiert die konsole charakters und leerzeichen werden leider oft in den quellcode eingefügt die sind entweder unsichtbar 4:08 oder schwer zu erkennen was zu fehlern führen kann wenn die zeichenfolge nicht in erwartung des entwicklers entspricht wenn du tatsächlich ein 4:16 kontrollcharakter verwenden muss verwendet deren codierte version zb den ascii oder den uniko beispielsweise sollten wir keinen tag 4:24 zwischen zwei zeichen mit der tabulator taste einfügen stattdessen können wir die us die codierung für den tab verwenden das gilt nicht nur für tabs 4:33 zwischen zwei zeichen generell sollten wir den ascii codes für den tabula auto verwenden auch gibt es zum beispiel breiten lose leerzeichen also 4:40 leerzeichen ohne sichtbaren abstand diese werden von einigen ids nicht erkannt intelligent jedoch solche leerzeichen und hinterlegt dafür die 4:49 englische abkürzung z bsp für ein breites leerzeichen verwende der entsprechenden unikat für den fall dass du nicht weiß was einen breiten loses 4:59 leerzeichen ist dann schaue gerne in die video beschreibung dort habe ich einen link mit einer erklärung zur verfügung gestellt nun sind wir am ende angekommen 5:07 ganz ehrlich waren dir diese konvention schon bekannt oder hast du mit diesem video neues dazugelernt ich schreibe gerne in die kommentare ob das video die 5:15 geholfen hat und welche konvention du noch nicht kannte hättest du lust auf einen zweiten teil wenn dir das video gefallen hat freue ich mich auf ein 5:22 album eines kanals bis dahin beim model my mind