Latest / Coding Buddies | Tech & Dev-Mindset / #118 Design Patterns 1 – Schluss mit Chaos im Code
Transcript
- 0:00A 5 leichter schliff auf 3 und denkst dir so ey.
- 0:04Was alter, Oh mein Gott, oh mein Gott, bitte entfernen Sie nicht
- 0:09Coding Buddies Dein Podcast rund um Softwareentwicklung und
- 0:12aktueller Tech News. Herzlich Willkommen.
- 0:26Halli Hallo und herzlich Willkommen zur neuen Folge des
- 0:30Coding Bodys Podcasts. Schön, dass du wieder
- 0:31eingeschaltet hast. Und wie soll es anders sein,
- 0:35deine Gastgeber wie immer und jetzt auch schon seit einer
- 0:37ganzen Weile meine Wenigkeit, der Tino und der fantastische
- 0:41Fabi, der mir wie immer hier gegenüber sitzt und ich ihn
- 0:44begrüßen mag, er grinst, er hat Bock, er ist bereit fabi was
- 0:49geht ab? Einen wunderschönen guten Tag,
- 0:51Tino. Einen wunderschönen guten Tag.
- 0:55Geht es? Wie geht es dir?
- 0:56Mir mir geht es gut, das Wetter schön.
- 1:00Das ist schön. Ich hab das schon mal ne
- 1:02langsame. Voraussetzung Ja, Gefühl
- 1:04langsamer Sommer hast du, hast du dir was vorgenommen.
- 1:08Diesen Sommer geht es irgendwo hin, geht es irgendwie cool in
- 1:10den Urlaub. Ne, ich hab noch gar nicht so
- 1:12viel geplant, ich bin aber sehr spontan im Buch, auch sowas
- 1:15meistens sehr spontan, hab noch keinen Plan, ne kann ich kann
- 1:20ich. Kann ich nichts berichten jetzt
- 1:22so ne coole Urlaubsstory oder so, da ist noch nichts geplant
- 1:25da. Wünsch ich dir auf jeden Fall
- 1:26dir erzählen, dass du was Schönes findest.
- 1:28Ja, klar. Ja, ich, ich glaube, pass auf,
- 1:31wir hatten das glaub ich mal in irgendeiner.
- 1:32Es ist jetzt auch schon n paar Jahre her, also man kann ja
- 1:35jetzt glaub ich schon fast sagen 2 Jahre weil so lange machen wir
- 1:38schon n Podcast ungefähr n bisschen mehr.
- 1:40Ist heftig. Ja, und ich hab irgendwann mal
- 1:44gesurft. Habe ich auch berichtet in in
- 1:47der Podcast Folge und das mache ich diesen Sommer noch mal.
- 1:51Hat mir so gefallen, dass ich Bock drauf hatte noch mal surfen
- 1:55zu gehen. Das heißt im August werde ich
- 1:56auf jeden Fall noch mal eine Runde surfen.
- 1:58Dann haben wir die gleiche Podcast Folge einfach noch mal
- 2:00raus. Genau, einfach.
- 2:04Das Surfen, Salz und Def Offs oder wie soll ich das?
- 2:08Stimmt ja, kann ich auf jeden. Fall nur ja, Wellen surfen.
- 2:12Ist auch ne coole Sache, ist auch ne coole Sache, das glaub
- 2:15ich dir sofort. Ich bin ja eher noch beim
- 2:17Wintersport, aber ich denk mal surfen wird auch noch mal auf
- 2:19meiner Agenda sein, unbedingt ansonsten bis wir denn zu der
- 2:22Surffolge kommen, wollen wir ja heute mal quasi ein neues Thema
- 2:26anfangen, wir haben ja immer so kleine Podcast folgenreihen sagt
- 2:31man glaub ich nennt man so und es ist Zeit mal wieder für ne
- 2:34neue Wir haben ja auch schon so n Paar abgeschlossen, wir hatten
- 2:36ja zum Beispiel die Clean Code Reihe.
- 2:38Und haben uns gedacht, Na, lass uns doch mal ne Reihe machen zu
- 2:42so richtigen Basics. Ja, also so wirklich Themen, die
- 2:46gerade für Einsteiger noch sehr relevant sind und für
- 2:49Fortgeschrittene immer noch relevant sein sollten, auch
- 2:53gerade so hinsichtlich Auffrischung noch mal da n
- 2:57bisschen drüber nachdenken. Ja, so Back to the roots ja
- 3:00dementsprechend. Haben wir doch n ganz, ganz
- 3:03cooles Thema mitgebracht, oder? Fabi hau doch mal raus.
- 3:06Das Thema ist Software Design Patterns, also ich mein.
- 3:11Kurz, kurz, sag kurz, jetzt kannst du was anderes.
- 3:15Ich meine, man hat das sicherlich schon mal gehört,
- 3:18zumindestens sowas wie Factory Pattern, singleten, Observer,
- 3:21Pattern oder was auch immer. Also es gibt ja einige von
- 3:24diesen Patterns und. Wir wollen einfach jetzt mal ne
- 3:28Reihe starten. Ne, heute geht es erstmal so n
- 3:30bisschen um die Einleitungsfolge um dann sozusagen immer mal
- 3:34wieder regelmäßig ein bestimmtes Pad an uns rauszunehmen.
- 3:38Vielleicht wären es auch 2 pro Folge, gucken wir mal und die n
- 3:41bisschen durchzusprechen ne um einfach mal zu gucken OK ne was
- 3:46ist das für n pad dann was wird da eigentlich ne was wird damit
- 3:49gemacht, warum braucht man das überhaupt, warum nutzt man das
- 3:52eigentlich ne und ich meine? Selbst wenn man Patterns
- 3:56vielleicht noch gar nicht so richtig kennt, ist es ja auch
- 3:59so, dass man vielleicht unterbewusst beziehungsweise
- 4:02nicht unterbewusst, sondern unbewusst dieses Pattern
- 4:05vielleicht schon nutzt. Ne, also ich hab das glaub ich
- 4:08selber auch schon mal gehabt, dass ich mir dachte, so oh, ich
- 4:10brauch jetzt zum Beispiel. Ne Klasse, die nur irgendwie
- 4:14einmal existiert und hab dann irgendwas zurecht gefriemelt und
- 4:18dacht mir so Oh guck mal, ist n Singleton so ne sowas aber
- 4:20besprechen wir alles noch mal im Einzelnen ja.
- 4:23Ich glaube, du hast ja allein schon den Fall, wenn du sag ich
- 4:26mal Frameworks verwendest, Lips verwendest oder hast selbst
- 4:29Sprachen an sich, die ja unter der Haube auch.
- 4:33Auf Design Pattern zurückgreifen, ne, dass du halt
- 4:35sagst, OK, warum muss ich jetzt das so und so aufrufen unter OK
- 4:38was gehen da für Parameter rein und unter der Haube sitzen da ja
- 4:42auch wieder Design pattern. Warum ist es so, warum muss ich
- 4:44das überhaupt so aufrufen? Ja und deswegen ist das so n
- 4:49sehr basic Thema aber immer cool da noch mal drüber nachzudenken.
- 4:53Ja, es ist ja auch immer aktuell, weil irgendwie.
- 4:55Kommt man eigentlich, wenn man im Alltag programmiert, egal wo
- 5:00dran, man programmiert eigentlich immer wieder an
- 5:02irgendwie Punkte wo man sagt, OK, dies oder jenes Pattern
- 5:05macht schon Sinn das jetzt einzusetzen und dann hilft es
- 5:08halt auch manchmal darüber Bescheid zu wissen, was es
- 5:11überhaupt für Patterns gibt, wann man die vielleicht benutzt,
- 5:14damit man einfach in der Lage ist, in seinem Repertoire
- 5:16einfach darauf zurückzugreifen und nicht erst weiß, nicht ewig
- 5:19darüber zu überlegen, weil es macht ja auch einfach Sinn.
- 5:23Und in der Folge jetzt wollen wir noch nicht speziell.
- 5:26Über. Bestimmtes Pattern reden,
- 5:27sondern erst mal klären, was überhaupt Design Patterns genau
- 5:31sind, warum man sie halt kennen sollte und halt einfach mal
- 5:36gucken, welche schon mal ein bisschen anreißen, was wir
- 5:38vielleicht für Patterns in der neuen Reihe, die wir jetzt
- 5:41anfangen mit dieser Auftakt Folge besprechen wollen.
- 5:45Genau und Liebe zu Liebe zu. Falls du dir denkst, so geiles
- 5:48Thema, ich habe richtig Bock auf die Reihe und vielleicht
- 5:51allgemein unseren Podcast abfeierst und.
- 5:53Schau doch mal in die Shownotes, da findest du n Link, falls du
- 5:56Bock hast uns n bisschen zu supporten, da ist n spenden Link
- 5:58dieser Aufruf ganz kurz an dieser Stelle bevor wir jetzt
- 6:01los starten. Wir würden uns mega freuen das
- 6:03supported uns extrem und schon mal vielen Dank dafür und jetzt
- 6:07wie Let's Go lass die Reihe starten wir.
- 6:11Brauchen jetzt so ne Tröte. Genau.
- 6:15Genau. Also wir können ja erstmal
- 6:17anfangen, was eigentlich so Software Design pattern
- 6:20eigentlich was es ist ne. Ich find man kann das ja, du
- 6:23weißt wie ich es, wie ich es gerne handhabe, am besten mit
- 6:26Analogien erklären und ich weiß gar nicht, ich glaub in unserer
- 6:31allerersten Folge hattest du mich mal gefragt, wie du oder
- 6:36was ich an der Softwareentwicklung so mag und
- 6:38ich hab da so ne Analogie lego genommen und die würde ich jetzt
- 6:41noch mal ähnlich verwenden, weil wenn du sagst du hast Design
- 6:45pattern ne und du und das ist so wie wenn man sagt man baut mit
- 6:50Lego etwas. Und du kannst ja mit Lego alles
- 6:53mögliche bauen, ne. Und wenn du jetzt zum Beispiel
- 6:55aber sagst, du willst keine Ahnung n Auto bauen, dann
- 6:58braucht das irgendwie 4 Räder und irgendwie sag ich mal ne
- 7:00Karosserie und damit du nicht aber jedes Mal überlegen musst,
- 7:03sag mal wie bau ich denn jetzt diese Karosserie, gibt es dann
- 7:06vielleicht ich nenn es mal so ne Anleitung wo du bestimmte
- 7:09gängige oder bewährte Bauschritte drin hast um halt
- 7:12eben sowas dann einfach schnell noch mal bauen zu können, ohne
- 7:15dass du jedes Mal überlegen musst.
- 7:17Ha. Wieviel Räder waren denn das
- 7:18noch mal im Auto 4? 5. 20 weißt du, sind ja fragen,
- 7:23die einem ständig aufkommen. Dann beim Legoboard.
- 7:26Ich frag mich auch grad welches Auto 20 Räder hat, aber es gibt
- 7:29bestimmt welche. Nee, aber.
- 7:31Also in der Analogie kannst du es halt so sehen.
- 7:33Ne LEGO ist halt dann der Code und diese Anleitung von dir ich
- 7:36gesprochen sind dann im Endeffekt die Designpad dann
- 7:37nachdem man dann sozusagen basteln kann ne.
- 7:39Also es sind halt ja ich sag mal.
- 7:43So. Es ist nicht etwas, wo du sagst,
- 7:46so ist es copy paste und fertig für das Problem, sondern es ist
- 7:49im Endeffekt etwas ja wo du dich es ist n Konzept so das kann man
- 7:55sagen. N wiederverwendbares Konzept und
- 7:58gerade so bei LEGO. Wenn du zum Beispiel wie du
- 8:00schon meinst, so Autos ne, dann wirst du halt zum Beispiel dir
- 8:02denken Hey aber warte mal n Auto ist ja immer gleich aufgebaut,
- 8:05dann kann ich ja schon mit diesem Konzept immer diese
- 8:08Grundstruktur bauen und dann halt nur noch.
- 8:12Quasi adaptieren wie genau das Auto da noch mal aussehen soll.
- 8:16Aber der Grundaufbau ist der gleiche und da sind wir auch
- 8:18schon bei dem ersten Pattern, das geht nämlich ganz stark in
- 8:21die Factory Pattern Richtung. Was werden wir auf jeden Fall
- 8:24mal hier in der Reihe beleuchten, aber da sieht man
- 8:26halt schon, es gibt halt Konzepte die man immer wieder
- 8:29verwenden kann und das ist nicht nur bei Autos so, bei Häusern
- 8:32also wir sind immer noch in der Legowelt ne wenn du anfängst dir
- 8:35so ne kleine lego Stadt zu bauen wirst du immer wieder zu dem
- 8:38Punkt kommen zu sagen. Warte mal so was ähnliches hatte
- 8:41ich schon mal. Wie habe ich denn das gemacht,
- 8:42als habe ich so eine so eine generelle Lösung dafür, wie ich
- 8:46das angehen kann. Halt ne ich finde die Analogie
- 8:50auch mega cool, eine die auch so rumgeistert weil sie halt auch
- 8:54sehr treffend ist ist so eine typische Bauanleitung, ne also
- 8:59sagen wir mal so was wieso eine Ikea bauanleitung?
- 9:02Ikea ist ein super Beispiel für ne wer schon mal irgendwie da
- 9:05eine Küche oder so aufgebaut hat dann erstmal ich fühle das das
- 9:08ist echt Scheiße. Mach das lieber nicht.
- 9:12Aber du hast ja am Ende genau solche Sachen wie Hey, so ein
- 9:16Korpus ist immer gleich. Ja, du machst vielleicht eine
- 9:18andere Tür dran, am Ende vielleicht ein anderer Griffe,
- 9:20aber du hast halt eine Anleitung, die dir erstmal sagt,
- 9:22so und so machst du erstmal einen Korpus und damit fängst du
- 9:24jetzt an deine Küche aufzubauen. Ja, und genauso ist es in der
- 9:27Softwarewelt dann am Ende auch und ich finde das sind auf jeden
- 9:30Fall sehr treffende Analogien. Ja, vor allem die funktionieren
- 9:33halt einfach in. Also ich würde mal sagen.
- 9:37Je nach Anwendungsfall und je nach Pattern, was du vielleicht
- 9:40gerade gebrauchen kannst, funktionieren die halt einfach
- 9:43irgendwie universell in vielen Projekten und in vielen
- 9:46Kontexten und das ist halt das Schöne.
- 9:48Das heißt, wenn du einmal das Konzept oder diese diese
- 9:51Strategie verstanden hast, wie Code sozusagen in diesem Pattern
- 9:55eigentlich arbeitet oder was da eigentlich hinter steckt oder
- 9:58wofür man das verwendet, dann ist es natürlich einfach
- 10:00sinnvoll und hilft dir dann im weiteren, dein Code einfach zu
- 10:04verbessern. Und deswegen ist es nicht
- 10:06schlecht. Also wenn du jetzt mal als
- 10:08Beispiel ne, du brauchst ne ne Möglichkeit wie mehrere Teile in
- 10:13der Anwendung zum Beispiel benachrichtigt werden, also zum
- 10:15Beispiel du hast irgendwie n System und musst halt keine
- 10:20Ahnung sagen wir mal teilsystem a, teilsystem b und Teilsystem
- 10:23c, musst du irgendwie benachrichtigen ne und du sagst
- 10:25ja so ah was mach ich denn jetzt?
- 10:26Da gibt es vielleicht irgendwie du kannst dir was überlegen, du
- 10:29kannst dir irgendwie ne ne Strategie zusammenbasteln wie
- 10:31man irgendwie das alles hinkriegt.
- 10:34Aber um zum Beispiel, dass also zum Beispiel über die GUI ne,
- 10:37also du hast so ne GUI, klickst da irgendwo drauf und dann
- 10:40werden halt alle diese Teilsysteme benachrichtigt,
- 10:42kannst du halt zum Beispiel mit zum Observer Pattern
- 10:44beispielsweise machen. Nur mal nur mal irgendein
- 10:46Beispiel zu nennen, dass man einfach mal jetzt in der
- 10:49Softwarewelt sozusagen diese Analogie jetzt umsetzen und
- 10:53sagt, OK, es gibt ein eine Lösungsstrategie und diese
- 10:56lösungsstrategie kann man dann anwenden und das ist natürlich
- 10:59etwas abstraktes, Allgemeines, was du dann auf den konkreten
- 11:03Fall anwendest. Genau das ist nicht der Punkt,
- 11:07dass egal was man am Ende entwickelt, was für ein Produkt
- 11:11das ist, in welcher Sparte das ist.
- 11:15Die Softwareentwicklung kommt oft an gleiche Probleme, die
- 11:18schon gelöst wurden und dann kannst du halt so Strategien
- 11:22wieder verwenden, zum Beispiel so was wie.
- 11:24Hey, ich hab irgendwelche wie du gerade meintest.
- 11:27Ne Komponenten die müssen informiert werden wenn in einer
- 11:30anderen Komponente sich was ändert, also wie Krieg ich das
- 11:33hin? Ja die müssen jetzt irgendwie
- 11:34darauf lauschen, die müssen irgendwie mitkriegen wenn sich
- 11:36da was ändert, weil du jetzt zum Beispiel so n Observer Pattern
- 11:39ansprichst und das ist ja genau der Punkt dieses Grundproblem,
- 11:43ja die. Hast du immer wieder, ob du
- 11:46jetzt keine Ahnung frontend machst oder keine Ahnung
- 11:49wirklich Desktop Applications selbst überall, egal in welcher
- 11:53Sparte, in welcher Branche, wie auch immer, sowas kommt ja immer
- 11:56wieder und da gibt es halt Lösungen, die haben sich
- 11:58durchgesetzt, die sind durchdacht sag ich mal und es
- 12:02ist auf jeden Fall super hilfreich sich die mal
- 12:04anzuschauen zu verinnerlichen weil es einfach.
- 12:07Im Prinzip deine Denkweise und auch dein ja, dein dein dein
- 12:12Toolset erweitert ne, weil du halt zu diesen Problemen kommst
- 12:15und dir denkst, ha warte, da kann ich das und das Pattern
- 12:19nehmen, das wird da gut, das hat sich bewährt.
- 12:20Ja, das ist ja wirklich so, das hat sich bewährt.
- 12:23Ja, ob es immer der richtige Weg ist?
- 12:25Klar, das ist irgendwann auch fallspezifisch ne.
- 12:27Es gibt auch Fälle wo du sagst, ja vielleicht doch nicht das
- 12:29Patternehmen, obwohl es vielleicht letzte mal ne sehr
- 12:31gute Sache war, aber in dem Fall ne ist natürlich auch immer
- 12:35spezifisch, aber du hast auf jeden Fall ne Anlaufstelle.
- 12:38Und da hilft. Auch das Bild rumgeisters ne,
- 12:40was ja so dieses klassische Antipattern war wär ich mach
- 12:44erstmal es funktioniert jetzt kommt noch was rein oh er
- 12:46funktioniert immer noch, irgendwann gar keine Struktur,
- 12:49keine Strategie. Ich bin am Arsch.
- 12:52Sowas, aber dafür hilft es natürlich auch, dass man mehrere
- 12:55verschiedene kennt, also mehrere Design Pattern, ne, dass man
- 12:58jetzt nicht immer nur auf 1 zurückgreift, sondern vielleicht
- 13:00auch ein Repertoire hat und das wollen wir auch ein bisschen mit
- 13:02der Reihe schaffen. Ich finde es gut, dass du
- 13:05Antipattern angesprochen hast. Ich finde das sollte auch mal
- 13:07eine Folge werden, dass wir einfach auch mal darüber reden,
- 13:10was eigentlich antipattern sind, weil das ist nämlich eigentlich
- 13:14im Endeffekt genau das Gegenteil von dem Design pattern, weil
- 13:16Design pattern also. Wenn wir jetzt überlegen, warum
- 13:19die eigentlich wichtig sind, ne, warum gibt es dir eigentlich was
- 13:22was? Wobei helfen die denn überhaupt?
- 13:24Ne? Also allein was mir als Erstes
- 13:27einfällt ist, dass du zum Beispiel einfach ne ne super
- 13:29Erweiterbarkeit hast und ne höhere Flexibilität in deinem
- 13:32Code. Ne wenn du jetzt zum Beispiel
- 13:35sagst, du hast jetzt n infactory pattern, ne, dann dann kannst du
- 13:38zum Beispiel. Ne, wie der Name schon sagt
- 13:43irgendwie. Du hast ne Factory, du kannst da
- 13:45verschiedene Sachen draus bauen. Also du kannst jetzt zum
- 13:47Beispiel sagen, OK ich bau jetzt n Auto aber ich kann zum
- 13:49Beispiel vielleicht aber auch n anderes Modell von einem Auto
- 13:51bauen, ne wie auch immer, aber weil wir vorhin bei Auto waren
- 13:54aber du hast halt eine Fabrik die dir verschiedene Variationen
- 14:00einer Instanz ausspucken kann, die aber irgendwo sagen wir mal
- 14:03n Kern haben n gleichen Kern und n Antipattern zum Beispiel und
- 14:08das hilft halt einfach weil wenn du jetzt zum Beispiel n Neues.
- 14:11Keine Ahnung. N neues Modell reinbringst was
- 14:13irgendwie rauskommen soll, was aber im im Grunde ne im im Kern
- 14:16das Gleiche ist. Dann ist es einfach schön, dass
- 14:20man das Ganze einfach erweitern kann.
- 14:21Ne, also du hast halt, musst nicht mehr viel machen und
- 14:24kannst sozusagen aus dieser Fabrik relativ schnell wieder
- 14:28was ähnliches rauszaubern und das ist ja das schöne und n
- 14:31Antipattern zum Beispiel weil das, darauf wollte ich gerade
- 14:33noch mal hinaus, das ist halt etwas.
- 14:36Was eigentlich genau das Gegenteilige bewirkt, also
- 14:39sozusagen die Erweiterbarkeit und Flexibilität, wenn wir jetzt
- 14:42bei dem Beispiel bleiben, einfach einschränken, ne.
- 14:45Und ja, du hast halt den Punkt ne, wenn wenn man das
- 14:48Autobeispiel nimmt. Du kannst ein Modell
- 14:50reinbringen, du kannst 2 reinbringen 34 das mag alles
- 14:53noch gehen ne dann sagst du ja OK ich definier zum Beispiel
- 14:56jedes Mal wieder, dass n Auto 4 reifen hat, ne 4 Räder, 2 Achsen
- 15:00wie auch immer, alles was man so definieren könnte dann auch auf
- 15:03softwareseite ne. Das mach ich halt 34 mal.
- 15:07Aber wenn ich dann irgendwann ne riesen Palette hab es quasi ne
- 15:10große Fabrik sag ich mal ja hab ich Bock das alles jedes Mal
- 15:14noch mal neu zu definieren oder hab ich im Kern nen gleichen
- 15:18Aufbau und nur die Farbe ändert sich oder keine Ahnung die
- 15:22Leistung der Motor was man immer denn auch variieren möchte in
- 15:24seiner Software und da merkt man halt schon so hey ja warte mal
- 15:27es macht absolut Sinn da irgendwie so ne gemeinsame.
- 15:31So n kleinsten gemeinsamen Teiler zu finden und genau dafür
- 15:33sind dann halt auch so Pattern da, damit dein Code nicht
- 15:36komplett auswuchert ne, dass du gar nicht mehr weißt wo vorne
- 15:39und hinten ist, sondern erst skalierbar, er ist Wartbar ist
- 15:42ne, dass er verständlich ist und da gibt es halt richtig richtig
- 15:45gute Design patterns. Die man auch wirklich regelmäßig
- 15:49verwendet. Und es ist auch irgendwo ne
- 15:51stilistische Frage. Das heißt, es gibt Leute die
- 15:53fahren total auf das eine Pattern an ab wo andere das gar
- 15:57nicht verwenden, dann gibt es halt auch immer so 2 Lager.
- 16:00Ja wie kannst du das nehmen, das ist total schlecht und die
- 16:03anderen sagen ohne das kann ich gar nicht leben so.
- 16:06Also das ist auch immer so ne Mindset frage am Ende und
- 16:08deswegen würde ich sagen, also wir werden das ja so machen,
- 16:11dass wir die hier objektiv ganz neutral mit so vor und
- 16:14Nachteilen beleuchten, die wir da drin sehen.
- 16:17Also Neutralität im Sinne von wie wir das sehen aber nicht
- 16:20bewerten, ob wir das gut oder schlecht finden, weil ich finde
- 16:22jedes hat am Ende seinen an Anwendungsfall sag ich mal auf
- 16:26jeden Fall und es spielt halt auch immer viel Erfahrung am
- 16:29Ende mit rein und deswegen gerade liebe Zuhörer liebe
- 16:31Zuhörer, wenn du vielleicht am Anfang deiner
- 16:34Softwareentwicklungskarriere stehst schau dir ruhig mal
- 16:37verschiedene an und nimm dir mal 1 und bau mal verschiedene
- 16:41kleine Sachen damit und probier dich damit aus.
- 16:43Versuche herauszufinden, was gefällt dir daran, was gefällt
- 16:46dir daran nicht, welche Grenzen siehst du und welche Vorteile
- 16:50und ich finde mit so kleinen Beispielen und wenn wir quasi in
- 16:53den einzelnen Folgen auf die Patterns eingehen, können wir
- 16:55auch Beispiele nennen, die man vielleicht so ein bisschen
- 16:58nachcoden kann, merkt man erstmal eher, doch das ist so
- 17:02wie cool, das hilft mir ja. Was ich zum Beispiel auch finde,
- 17:06ist, dass es natürlich auch hilft zu sagen, OK, wenn du
- 17:11beispielsweise diese Begriffe, wenn die also wenn dir diese
- 17:14Patterns n Begriff sind und du vielleicht auch in, sagen wir
- 17:18mal im Team arbeitest oder so, dann hast du natürlich auch
- 17:20einfach dieses Vokabular mit dem, was dahinter steckt, halt
- 17:24eben auch direkt drin. Also wenn jetzt zum Beispiel
- 17:26jemand sagt, soeben, da würde ich doch zum Beispiel am besten
- 17:29das verwenden und du denkst dir so coole Sache, weiß ich gerade
- 17:32nicht, was das ist. Und ich weiß ja auch, wie das
- 17:35ist. Also ich hab das selber auch
- 17:37schon n paar mal gehabt, so dass man sich dann zwar denkt, Oh,
- 17:39das muss ich mal nachgucken, aber im Endeffekt guckt man es
- 17:41ja doch nicht nach, weil man ist ja auch meistens mit anderen
- 17:43Sachen beschäftigt, ne? Ne, das ist so auch so ne kleine
- 17:47Analogie. Ich stell mir das manchmal immer
- 17:49so vor, weil du meinst so so Vokabular ne, stell dir vor du
- 17:52bist jetzt noch mal so im handwerklichen Bereich unterwegs
- 17:55ne und kommst so neu in ne Firma und hast so n Projekt und bist
- 18:00zum Beispiel jetzt vielleicht n Lehrling oder so ne.
- 18:02Und wie es nervt ja am Anfang so angenommen du, du trägst den
- 18:06großen, sag schon Werkzeugkoffer ne immer hinterher hinter dem
- 18:11Meister und er sagt Ja gib mir mal das und das hier komm wir
- 18:13brauchen Ah siehst du den Fall wir brauchen jetzt das und das
- 18:16und du wühlst da drin rum weißt gar nicht was du rausnehmen
- 18:18sollst. Gibst du ihm irgendwas in der
- 18:19Hoffnung dass es stimmt so ne und das ist ja im Prinzip auch
- 18:22ne Analogie dafür, wenn man sich mit diesen Themen
- 18:24auseinandersetzt und dann in ein Team reinkommt, jemand sagt EY
- 18:27wir haben hier n Problem. Vielleicht können wir das so und
- 18:30so lösen und du kennst das Pattern und hast so quasi ne
- 18:34strategische Übersicht wie es hier angewandt wird und ob das
- 18:39Sinn macht oder nicht. Ob das Sinn macht oder nicht,
- 18:41sind nachher Erfahrungswerte ganz klar ne ne.
- 18:44Also wenn ich so an an die letzten oder so einige Jahre
- 18:48mittlerweile zurückdenke, wo auch im Studium wo wir so
- 18:50Patterns kennengelernt haben, dachte ich mir ja ich bin bereit
- 18:54für die Coding Welt ich kann dieses Pattern, ich werde alles
- 18:57mit diesem Pattern lösen und dann.
- 18:59Also exzessiv genutzt, obwohl es gar nicht sinnvoll war, am Ende
- 19:02oder vielleicht echt Nachteile mit sich gebracht hat.
- 19:04Deswegen ist immer so pro Contra und Fall abhängig, aber es ist
- 19:08halt einfach wichtig diese zu kennen.
- 19:09Ja, ich finde deine Analogie muss ich gerade daran denken,
- 19:12dass ich letztens, weil ich bei meiner Zahnärztin und kennst du
- 19:17das, wenn du sitzt, da da, dann wird dein deine Zähne werden so
- 19:20durchgecheckt und dann so C 3 bis 8 sind OKA 5 leichter
- 19:26schliff auf 3 und du denkst dir so ey.
- 19:28Was alter, Oh. Mein Gott, Oh mein Gott, bitte
- 19:31entfernen Sie nicht. Und jetzt stell dir mal vor,
- 19:34dass du diese Vokabeln als zum Beispiel weiß, nicht hier, wie
- 19:38heißt das der Supporter hier zahnarzthelfer, wenn du das da
- 19:44nicht drauf hast, dieses. Vokabular ne so alles.
- 19:47Klar weiß ich auch nicht. So ja OK, ich sag mal wir bohren
- 19:52da genau. Da musst du dran denken.
- 19:56Aber du meintest ja eben, wir wollen das natürlich objektiv,
- 19:59dann die einzelnen Pattern betrachten und das finde ich
- 20:02auch sehr gut. Wir können aber trotzdem finde
- 20:04ich auch immer noch ein bisschen dazu sagen, ob wir die zum
- 20:07Beispiel auch oft verwenden oder nicht, weil ich weiß selber,
- 20:08dass ich zum Beispiel bestimmte Pattern oft auch gerne verwende,
- 20:12einfach auch, weil man es schon oft so oft gemacht hat und
- 20:14andere verwendet man vielleicht nicht so oft, aber das sind
- 20:18immer finde ich auch genau die Punkte, weil es kommt immer
- 20:20darauf an. Auch wie oft, was du eigentlich
- 20:23auch meintest, ne wieviel Erfahrung man damit schon
- 20:26gesammelt hat, weil es ist am Ende ja auch irgendwie ne Sache
- 20:29von wie gut kann ich dieses Tool benutzen?
- 20:32Ne also du wirst dich ja genauso hinstellen und sagen ey wenn ich
- 20:35zum Beispiel IDI 1 verwende, immer zum Beispiel von Jet
- 20:38Brains oder so und aber auf der anderen Seite irgendwie n
- 20:41anderer IDI nicht so oft verwende.
- 20:43Dann nimmst du natürlich eigentlich lieber das, was du
- 20:45schon gerne, also was du öfter verwendest, ne.
- 20:47Aber genau dafür ist es natürlich auch da, dass man auch
- 20:50so seinen Horizont erweitern kann und sagen kann, EY Pass
- 20:52auf, es gibt ja noch die und die Patterns und meistens gibt es
- 20:56auch vielleicht wirklich für n bestimmten Anwendungsfall.
- 20:59Hattest du vorhin glaub ich auch gesagt mehrere Patterns die man
- 21:01einfach verwenden kann, ne ist einfach gut und ich glaub da
- 21:06kann man selber auch noch. Also selbst wir können auch was
- 21:08dabei lernen. Das wollte ich gerade sagen.
- 21:12Ich hab halt auch, als du die Reihe vorgeschlagen hattest, war
- 21:15das auch so mein erster Gedanke, dass ich halt wirklich Bock
- 21:18drauf hab, weil es gibt viele Patterns und es gibt viele, die
- 21:22ich ewig nicht verwendet hab, weil du ja wie du gerade so
- 21:25meintest. Man kommt halt in seinen Modus,
- 21:28ne in seinen Stil so und guckt manchmal nicht mehr nach links
- 21:31und rechts, gerade wenn man projektgetrieben ist.
- 21:34Ne vielleicht Deadlines hat, dass man sagt ja nee ich löse es
- 21:36so. Wie es mir jetzt im Sinn kommt.
- 21:39Vielleicht gibt es andere charmante Lösungen, vielleicht
- 21:42auch bessere, die ich jetzt aber einfach gerade nicht auf dem
- 21:44Schirm, aber ich mach jetzt so mit meinem Stil das und da, das
- 21:48ist jetzt weder gut noch schlecht bewertet, ne, aber es
- 21:50ist einfach Fakt, dass man irgendwie so seinen Coding Stil
- 21:54hat und deswegen hab ich so Bock auf die Reihe, weil wir uns ja
- 21:57damit zwangsläufig noch mal alle Patterns angucken und ich hab
- 22:02auch Bock alle noch mal so n bisschen Beispiele zu coden.
- 22:06Einfach das aufzufrischen und deswegen auch die der Appell am
- 22:09Anfang gerade auch an fortgeschrittene Coder oder
- 22:13Coderin oder auch vielleicht seniorentwicklerin, die halt
- 22:17mega viel Erfahrung haben, einfach noch mal n step
- 22:20zurückgehen und sich noch mal auf die Basics besinnen und sich
- 22:23das alles noch mal angucken. Vielleicht.
- 22:25Entdeckt auf jeden Fall Sinn. Genau.
- 22:26Vielleicht entdeckt man noch mal was Schönes, was man vielleicht
- 22:28was, was vielleicht auch in Vergessenheit geraten ist.
- 22:30Ne, manchmal denkt man sich ja auch so ne wie du meinst du bist
- 22:32im Modus und hast es dann vielleicht, du hattest es mal
- 22:35verwendet, hast es aber für. Völlig verdrängt und denkst dir
- 22:37wieder so, guck mal, das ist ja auch geil, aber Fakt ist es auf
- 22:40jeden Fall, dass diese Design Pattern, die sind halt warum
- 22:42sind die wichtig, weil sie am Ende eigentlich dafür im Großen
- 22:46und Ganzen kann man ja zusammenfassend sagen, zur
- 22:48Verbesserung der Codequalität einfach beitragen, aber wie du
- 22:52schon meinst, es gibt sehr sehr viele Arten von Pattern, es gibt
- 22:56ja glaube ich so verschiedene, also wir können das ja auch so
- 22:58Kategorien mal einordnen, was es da so gibt.
- 23:02Und vielleicht auch mal schon mal n Paar ansprechen.
- 23:04Also wir hatten ja schon jetzt n Paar gesagt, die wir halt auch
- 23:08jetzt definitiv auch mal in der in der Reihe sicherlich
- 23:10besprechen werden, was was haben wir denn da so für Kategorien?
- 23:16Nee, also ich glaub eine der größten ist so alles was
- 23:19Richtung Erzeugung geht oder also erzeugungsmuster ne also.
- 23:25Dass du im Prinzip ja. Wir hatten zum Beispiel das
- 23:28Factory Pattern genannt, du hattest glaub ich schon
- 23:30Singleton erwähnt. Bilder pattern find ich halt
- 23:35auch ziemlich cool, würde da auch reinspielen und das ist
- 23:38halt alles so, wenn ich zum Beispiel Objekte von Klassen
- 23:41erzeugen möchte, ne, also Instanzen.
- 23:44Da spielen die halt rein, dass da halt das ganze strategisch
- 23:47nach einem gewissen Design Pattern abläuft, oder zum
- 23:50Beispiel beim Single hast du ja schon gesagt, es nur einmal
- 23:53passieren kann. Entweder habe ich keins oder 1
- 23:55ja solche Sachen dann strukturmuster gibt es noch, da
- 24:04fällt mir. Direkt, direkt und ich überlege
- 24:10das Adapterpad dann zum Beispiel ne, also wenn ich sag ich mal 2
- 24:16ich hab a und b und die können eigentlich nicht direkt
- 24:18miteinander kommunizieren sag ich mal oder die greifen nicht
- 24:22aneinander ne so richtig wie man sich das auch bei.
- 24:25Bei verschiedenen Kabeln vorstellt ne, also so n so NUSBC
- 24:29Adapter zum Beispiel weißt du, dass du sagst ey OK, ich hab
- 24:33jetzt a, muss aber auf C kommen, jetzt nehm ich n Adapter der von
- 24:36A auf C geht und dann passt das. Genau das ist die perfekte
- 24:40Analogie schon wieder so OK. Ein Adapter patter du nimmst zum
- 24:42Beispiel einen USBC Adapter. Ja, ja, weil der Name steckt da
- 24:47schon drin, aber ich mein, da kann man sich das direkt
- 24:49vorstellen. Ne, also du hast wie gesagt 2
- 24:51Sachen die eigentlich nicht zusammenpassen und ich kann
- 24:53jetzt mit einem gewissen Pattern dafür sorgen, dass ich die also
- 24:57wie sagt man bitte? Verbinde verbinde ich find zum
- 25:02Beispiel Proxy, fällt mir da auch noch ein.
- 25:04Ich find Proxy klingt immer so sehr, wieso sagen wir mal außer
- 25:10Internetkommunikation ne. So hast du mal dein Proxy
- 25:13gecheckt, so ne aber im Proxy an sich ist ja am Ende auch wie
- 25:17gesagt, das ist ja ein ein Lösungs oder ein Muster was man
- 25:24verwenden kann und nicht nur unbedingt in der
- 25:25Softwareentwicklung, sondern vielleicht auch irgendwie zum
- 25:27Beispiel dann eher noch im Hardwarebereich.
- 25:30Ne, also das kannst du ja da auch verwenden.
- 25:32Also es ist halt immer wenn es jetzt.
- 25:35Da also es ist natürlich schon im Internet, also im im im
- 25:38Softwarebereich irgendwo, aber es ist so, ich würd sagen, das
- 25:40ist so vielleicht so n bisschen nicht mehr ganz ausschließlich
- 25:44Software kann kann jetzt jeder einordnen wie man will, aber für
- 25:47mich ist Proxy. Also wenn ich jetzt an Internet
- 25:49Proxy denke, irgendwie weiß ich nicht, das ist sowas, das
- 25:53programmierst du nicht, sondern das konfigurierst du weißt was
- 25:55ich meine. Ja, du bist jetzt ja OK auf
- 25:58Server Seite. Ja, quasi.
- 25:59Nee, aber deswegen. Aber es ist am Ende ist es ja
- 26:01auch ein Designpattern in der Softwareentwicklung, was man
- 26:04verwenden kann zum also unter Strukturmuster was da drunter
- 26:07fällt, ne. Und dann?
- 26:08Gibt es ja noch so Verhaltensmuster zum Beispiel.
- 26:12Ja, da hast du ja glaube ich das Observer schon genannt.
- 26:14Ne genau klassisches Beispiel, wenn ich halt irgendwie auf
- 26:19etwas. Lausche oder ja Observer.
- 26:22Ich beobachte n Verhalten von einer anderen Komponente und auf
- 26:25Ereignis A möchte ich informiert werden oder ich möchte
- 26:28mitkriegen, dass ein Ereignis auftritt, damit ich selbst drauf
- 26:30reagieren kann, so n klassischer Anwendungsfall, ne.
- 26:34Und dann würde ich sagen, also das sind jetzt so die 3
- 26:37Kategorien, die ich auch. So wirklich.
- 26:41Ich sag mal bei der Software Verorte bei der
- 26:43Softwareentwicklung. Im weiteren Sinne gibt es
- 26:47vielleicht auch noch so Architekturmuster.
- 26:49Haben natürlich auch was mit Software zu tun, aber auf einem,
- 26:53ich würde mal sagen auf einer anderen Ebene und deswegen würde
- 26:56ich architekturmuster jetzt nicht in das in diese Reihe mit
- 27:00Reinzählen, weil wir ja auch selber schon mal überlegt
- 27:03hatten, dass wir vielleicht auch noch ne andere Reihe irgendwann
- 27:05in Zukunft machen, wo es dann wirklich um Architektur und
- 27:09Architekturentscheidungen von Software geht.
- 27:12Ja, da auch gerne ne Nachricht an uns, wenn da Interesse
- 27:15besteht, dass wir diese Reihe machen, dann werden wir das
- 27:17natürlich auch sehr gerne tun, aber ja, ich weiß was du meinst.
- 27:22Also du meinst jetzt zum Beispiel so hab ich ne kleinen
- 27:24Server Anwendung, wär ja auch so ne Designentscheidung
- 27:26grundsätzlich in meinem Projekt hab ich Microservices, manche
- 27:31Frameworks die einfach auch sagen Hey pass auf das ist jetzt
- 27:34NMVVM Pattern was du hier verwendest oder MVC.
- 27:38Das sind ja alles auch Design Patterns, die aber irgendwo
- 27:41übergeordnet, also nicht n Teil von deinem Code sind sozusagen,
- 27:47sondern eine Architekturentscheidung deines
- 27:50Deiner Software sind am Ende. Ja, ich find das ist natürlich,
- 27:54also da kann man auf jeden Fall drüber diskutieren, aber
- 27:57irgendwie würde ich es glaube ich auch, gerade weil wir auch
- 27:58überlegt hatten, auch so in Sachen Clean Architecture, wie
- 28:02gesagt. Wenn es da auch Interesse gibt,
- 28:05auf jeden Fall uns gerne schreiben, aber dass wir da
- 28:07vielleicht auch noch mal irgendwie ne Reihe drüber machen
- 28:09und deswegen würde ich das glaube ich eher da verorten als
- 28:11jetzt in unserer Design Pattern Reihe.
- 28:14Genau ja. Ja, dann würde ich sagen, lasst
- 28:19uns noch am Ende, wir wollten ja wie gesagt ne einführungsfolge
- 28:22machen, das heißt gar nicht so lange heute aber noch mal kurz n
- 28:27Aufbau gehen, wie wird das aussehen?
- 28:28Also das ganze Stelle ich mir jetzt persönlich so vor,
- 28:31korrigiere mich. Dass wir halt so gewisse Fragen
- 28:34beantworten wollen. Zu dem Pattern ne und natürlich
- 28:37auch irgendwie nen Mehrwert generieren wollen, was so Take
- 28:41Home Messages zu diesen einzelnen Patterns sind.
- 28:43Ne also zum Beispiel ganz klar, wofür verwende ich überhaupt das
- 28:47Pattern XY, was gerade besprochen wird, also was löst
- 28:52das für n Problem? Wie sieht n typisches
- 28:54Codebeispiel aus? Hatte ich ja vorhin gesagt, das
- 28:56sollten wir auf jeden Fall uns hinter die Ohren schreiben, dass
- 28:58wir da was mitgeben und in welchen Situationen ist es halt
- 29:02auch besonders nützlich dann oder halt nicht geeignet.
- 29:04Ja, also ist ja mal n für und wider.
- 29:06Gibt es Alternativen? Zum Beispiel?
- 29:08Ja, guter Punkt. Manchmal hast du ja auch
- 29:10Fallstricke, weil ich kenn das zum Beispiel auch, dass du
- 29:12sagst, ich nehm jetzt so n Pattern und dann ist dieses
- 29:16Pattern, wenn es zum Beispiel nicht wirklich geeignet ist.
- 29:19Machst du dir das Leben damit eigentlich eher schwer, als dass
- 29:21es irgendwie hilft? Und das sind manchmal auch so
- 29:23Fallstricke, weil ich kenn das zum Beispiel weiß nicht, ich
- 29:27wollte irgendwie auch mal n Bilderpetter nutzen und dachte
- 29:29mir, so weißt du so halt, dachte ich mir so, das wär irgendwie
- 29:31cool und irgendwie hab ich dann so in der ganzen Programmierung
- 29:33dacht ich mir so ey, weißt du n bilderpetter macht dir irgendwie
- 29:37gar keinen Sinn. Also.
- 29:39Kommt halt auch dahin, dass man dann vielleicht auch zum
- 29:42Beispiel sowas als Fallstrick hat, aber vielleicht auch
- 29:45andere. Das wollen wir dann halt eben
- 29:46auch noch mitgeben, dass man halt da vielleicht auch noch mal
- 29:48ein bisschen aufpassen kann. Genau.
- 29:52Und was denkst du, was sind so die Tech Home Messages dann, was
- 29:57ist unser Ziel auch für uns persönlich?
- 29:59Von den einzelnen Folgen oder von der gesamten Reihe, sowohl
- 30:06als auch. Na ja, ich würd glaub ich schon
- 30:10n bisschen gucken oder? Oder mit also so die Frage
- 30:13beantworten, wie häufig wird so n Pattern im Endeffekt genutzt?
- 30:16Find ich nämlich irgendwie wichtig, weil da kann man sich
- 30:18dann nämlich auch selber find ich n bisschen drauf einstellen
- 30:20um dann zu sagen OK brauch ich das jetzt zwingend ist das ne
- 30:25Sache ne Sache die ich in mein Näheres oder mein alltäglicheres
- 30:28Repertoire aufnehmen muss beispielsweise oder vielleicht
- 30:31nicht? Ne, also wenn du jetzt zum
- 30:33Beispiel sagst, du hast sagen wir mal n Factory Pattern, das
- 30:35trifft mal relativ häufig an, würde ich sagen und dann hast du
- 30:37vielleicht irgendwie n anderes Pattern, was vielleicht manchmal
- 30:39wirklich sinnvoll ist. Aber eigentlich, wenn du es
- 30:42nicht kennst, dann ist es nicht schlimm, weil du triffst
- 30:45vielleicht mit weniger hoher Wahrscheinlichkeit darauf.
- 30:47Ne, das ist zum Beispiel auch irgendwie was, was etwas dann am
- 30:50Ende auch an Mehrwert generiert und dass man vielleicht auch
- 30:54weiß, OK in welcher Situation setze ich das ein, ne, wann ist
- 30:57es besonders nützlich, wann nicht so für die einzelnen
- 31:00Beispiele. Und aus der Reihe, was man da
- 31:02mitnehmen kann, ist natürlich, im Endeffekt soll man jeder, der
- 31:06sich sozusagen diese Reihe anhört, ein besseres Verständnis
- 31:09für die Strukturierung von komplexer Software gewinnen und
- 31:12gerade das, finde ich, ist auch ein wichtiger Punkt, weil
- 31:17zumindest aus meiner jetzigen Erfahrung natürlich auch mit AI
- 31:21kannst du dir zwar gut einzelne Funktionen generieren lassen und
- 31:25auch vielleicht darüber hinaus, aber irgendwann ist hat hat
- 31:28diese oder haben diese LLMS halt auch die.
- 31:31Grenzen und die gehen meiner Meinung nach darauf hin, dass
- 31:35du, wenn du komplexe Software erstellen willst, dann musst du
- 31:38da selber noch sehr, sehr viel mitwirken und das hilft dir
- 31:41halt. Ja, guter Punkt, guter Punkt.
- 31:47Ja, dann würde ich sagen, lass uns in der nächsten Folge der
- 31:51Reihe einfach mit einem. Erzeugungspattern zum Beispiel
- 31:56arbeiten, also damit anfangen, wir können, wir hatten jetzt zum
- 31:58Beispiel ziemlich schon ziemlich viel, das Factory Pattern, ja
- 32:02ne, damit könnten wir einfach einfach mal loslegen, würde ich
- 32:05sagen, ist n Klassiker und ist n Klassiker nutz ich auch gerne,
- 32:09also immer wenn die Situation es hergibt, aber ich mag das
- 32:12Pattern ja ansonsten fabi würde ich sagen ist es ne
- 32:18Einführungsfolge ziehen wir es nicht in die Länge.
- 32:21Liebe zuhören, liebe Zuhörer, falls du ein Lieblingspattern
- 32:24hast, lass es uns gerne wissen. Wir, wir diskutieren da gerne
- 32:27drüber, aber jetzt nicht, dass wir es kritisieren, sondern
- 32:29einfach wir möchten einfach gerne Eure Meinung hören oder
- 32:32möchtest du zum Beispiel n bestimmtes Pattern besprochen
- 32:34haben, gibt es da vielleicht n pattern wo du dir denkst so ah,
- 32:38das hab ich nie so richtig verstanden oder?
- 32:40Irgendwie ist mir das suspekt, warum sollte man das verwenden?
- 32:43So, das wäre auf jeden Fall auch richtig interessant.
- 32:45Dann schreib uns wie gesagt die E Mail findest du wie immer in
- 32:49den Shownotes oder halt auf jedem Kanal den du möchtest.
- 32:52Wir sind für dich da und werden es lesen und antworten.
- 32:56Nicht nur wir, auch die ganze Community kommen Discord wie
- 32:58gesagt alle links dazu in den Shownotes.
- 33:01Und ja, wenn dir der Podcast gefällt, wenn du sagst, ey, das
- 33:04ist cool, die die Folge war gut, der Podcast ist schön, dann.
- 33:08Lasst doch gerne eine Bewertung da, da freuen wir uns mega oder
- 33:10empfiehlt es auch gerne 2 deiner Freunden, Freundinnen oder
- 33:13Freundinnen würde uns auch mega freuen und ansonsten würde ich
- 33:18die Folge mal so ein bisschen zusammenfassen im Sinne von
- 33:22guter Code ist kein Zufall, das hatten wir schon mal gesagt,
- 33:25sondern er ist gut entworfen, in diesem Fall also würde ich sagen
- 33:31bis zum nächsten Mal. Bis zur nächsten Folge macht's
- 33:34gut bis dahin. Deine Coding Bytes gemeinsam
- 33:36besser. Hey Cortana.