Latest / Coding Buddies | Tech & Dev-Mindset / #157 IOSP - Das Coding Prinzip das wir nicht kannten (und trotzdem kickt)
Transcript
- 0:00Heute sprechen wir über ein Clean Code Prinzip, das er
- 0:02ehrlich gesagt selbst noch gar nicht kann.
- 0:03Dabei ist die Idee eigentlich relativ simpel, es ist das
- 0:05Integration, Operation, Segregation, Principle oder
- 0:08kurz. Iosp Coding Buddies Dein Podcast
- 0:13rund um Softwareentwicklung und aktueller Tech News.
- 0:15Herzlich Willkommen. Moin Moin und herzlich
- 0:30Willkommen zur neuen Folge des Coding Buddies Podcasts.
- 0:34Schön, dass du wieder eingeschaltet hast.
- 0:35Liebe Zuhörer, liebe Zuhörer, deine Gastgeber.
- 0:38Wie soll es auch anders sein, meine Wenigkeit, der Tino und
- 0:43der fantastische Fabi. Er lächelt mich an, wie immer
- 0:46seit Jahren schon, er hat Bock, er ist bereit, fabi, was geht
- 0:50ab, was geht ab? Was geht, weißt du, ich denk mir
- 0:54so bestimmt, wenn. Wenn so Leute angekündigt
- 0:57werden, weißt du im Fernsehen bei irgendeiner Show oder so.
- 0:59Ja, genau so muss ich das anfühlen.
- 1:01Ja, du kannst nicht anders als zu grinsen und dir zu denken, so
- 1:04okay es geht los. Also meinst du ich hab Potenzial
- 1:07das zu machen? Ja, auf jeden Fall.
- 1:09Vielleicht werde ich so professioneller Ankündiger neben
- 1:11dem Podcast noch, aber dann kann man den Buchen, um angekündigt
- 1:15zu werden dann. Kann man mich buchen um.
- 1:19Rauszulaufen ich lauf raus, egal froh.
- 1:26Genau, man bucht eigentlich nur das Paket, dass ich dich
- 1:28ankündige und du dann immer so erscheinst.
- 1:30Ja Jo, was geht ab, hat gar nichts mit dem Thema zu tun.
- 1:36Okay das waren die 2 wieder, jetzt geht's weiter.
- 1:39Lass uns. Weiter geht nicht im Programm.
- 1:41Die Na, wie geht's dir die Nachricht?
- 1:45Gut, gut soweit, hab gut Laune. Warum schön einfach so einfach
- 1:49so. Aber weißt du es, ich finde, es
- 1:51ist wichtig, auch einfach mal gute Laune zu haben und ich find
- 1:54es auch immer krass, wenn Leute einfach fragen, was ist mit dir
- 1:56los, ja was? Gehört sich diese dolle?
- 1:59Laune heute ja und ja, was denn passiert ja nichts, ich hab
- 2:02einfach gute Laune, ist einfach n schöner Tag.
- 2:04Es ist zwar super kalt irgendwie heute wieder, ich weiß auch
- 2:07nicht was da los ist. Die.
- 2:10Frage ist ja. Wenn sich Leute darüber wundern,
- 2:12dass jemand gute Laune hat, heißt das dann nicht eigentlich
- 2:15das andere, dass die Leute, die gefragt werden, eigentlich
- 2:18ursprünglich immer schlechte Laune haben und das jetzt so n
- 2:21Ausreißer ist, dass die Person ne gute Laune hat?
- 2:23Gute Frage, gute Frage oder erwartet man halt von dir?
- 2:28Ja, man erwartet vielleicht von der Person, dass sie schlechte
- 2:30Laune hat und ist dann verwundert, dass sie gute Laune
- 2:33hat, was bei dir aber nicht der Fall ist, weil wie gesagt, du
- 2:35hast eigentlich immer sehr oft gute Laune, was sehr angenehm
- 2:38ist. Danke.
- 2:41Und diese gute Laune möchte ich auch nutzen, um mit dir heute
- 2:44mal n richtig cooles Thema zu besprechen.
- 2:45Weil heute geht es um n Thema warte.
- 2:47Ganz kurz Nino, Sag kurz das Thema ja und dann will ich noch
- 2:52eine Sache kurz sagen, bevor wir richtig reinstarten.
- 2:55OK, krass, heute haben wir n Community Thema.
- 2:57Es ist n Wunsch aus der Community und was ich halt an
- 3:00dem Thema so besonders cool finde ist, dass ich absolut
- 3:03keine Ahnung hab worum es ging anfangs also ich hab davon noch
- 3:06nie gehört, du glaub ich auch nicht.
- 3:09Aber wir wollen heute mal wieder über ein Coding Principle, weil
- 3:13ja also ein Prinzip der Softwareentwicklung sprechen.
- 3:16Wir haben ja schon einige besprochen, ja, also wir hatten
- 3:20Drive, wir hatten Kiss, wir hatten Solid, jagten die also
- 3:23die ganzen Klassiker hatten wir ja hier im Podcast schon
- 3:27besprochen, also, liebe Zuhörer, liebe Zuhörer, falls du Bock
- 3:30hast auf n paar Coding Principles, die haben wir hier
- 3:33schon besprochen im Podcast, aber heute geht es um ein.
- 3:37Prinzip was ich echt noch nie gehört habe, aber vorher dein
- 3:39Punkt bevor wir es vergessen, weil dann können wir so richtig
- 3:41reinstarten. Genau also was ich sagen wollte,
- 3:44wenn dir das jetzt bekannt vorkommt, diese ganzen anderen
- 3:46Prinzipien, du hast vielleicht die Folgen schon gehört oder ist
- 3:48das jetzt hier deine erste Coding Buddies Folge und du
- 3:51denkst dir aber so, ja ich will diese anderen folgen aber noch
- 3:53mal hören interessiert mich gerade, dann lass auf jeden Fall
- 3:56ein Follow da, das hilft uns auf jeden Fall, aber vor allem auch
- 3:59dir, liebe Zuhörer lieber Zuhörer, weil du dann quasi
- 4:02nichts mehr verpasst. Also denk dran und.
- 4:05Tino, Ich würd sagen, jetzt ja, starten wir in das Prinzip rein,
- 4:09hau mal raus was. Ist das ja.
- 4:13Und zwar geht es heute um IOSP ja, und ich möchte mit dir
- 4:16einfach mal klären IOSP, oh mein Gott, klingt erstmal cool, aber
- 4:20was ist das überhaupt? Warum existiert noch ein
- 4:23weiteres Prinzip, weil ich glaub ich hab jetzt 4 gelistet, die
- 4:26wir alleine nur in diesem Podcast behandelt haben, weil es
- 4:28halt sehr gängige sind, es gibt ja noch viel mehr und.
- 4:33Bringt es wirklich was? Also das coole ist ja dadurch,
- 4:36dass wir uns damit noch nie beschäftigt hatten oder es
- 4:38irgendwie an uns so n bisschen vorbeigerauscht ist.
- 4:41War es jetzt echt cool sich das anzuschauen, jetzt mit dir zu
- 4:44besprechen und dann einfach mal n Fazit zu ziehen, bringt das
- 4:48was oder ist es nur so? N weiteres Prinzip was irgendwie
- 4:51na ja OK cool zu wissen, aber ist jetzt nicht notwendig so ne
- 4:56also das Fazit würde ich gerne mit dir am Ende ziehen aber.
- 5:00Lass uns mal anfangen. Was ist also jedes Prinzip hat
- 5:03ja ne gewisse Grundidee und da würde ich dich mal bitten mir
- 5:07das noch mal zu erklären und natürlich auch den Zuhörern.
- 5:10Also IOSP. Ja, es steht ja für oder IOS.
- 5:14Steht ja für Integration, Operation und Segregation.
- 5:18Also es ist auf jeden Fall sehr viel Asian da drin.
- 5:20Ja, das geht nicht so sonst. Nur für zungenbrecher.
- 5:26Reimt sich das oder reimt sich das nicht?
- 5:28Ich weiß es gar nicht, es ist reimt sich theoretisch oder
- 5:30reimt. Auf, Na ja, Reim, weil es immer
- 5:33die gleiche Wortendung ist, direkt off topic, da würd ich
- 5:36schon sagen, das sind aber keine guten Reime, ne, also wenn du
- 5:38immer die gleiche Endung nimmst, dann ist so na ja so hausmaus
- 5:41mäßig. Weißt du ja.
- 5:43Also der beste Reim ist ja auch, dass Haus sich am besten auf.
- 5:45Haus reimt also ja. Also OK ist ne.
- 5:49Sichere Sache Off. Topic Ende.
- 5:53Und zwar die Grundidee ist eigentlich relativ einfach, von
- 5:57diesem IOSP oder IOS Principal, und zwar sagen wir mal, dass du
- 6:03ne Funktionalität hast, ja, die entweder also oder eine Funktion
- 6:07hast, die entweder Integration oder Operation ist.
- 6:10Das heißt, eine ganze Gesamtfunktionalität wird
- 6:12irgendwie auch unterteilt, dann am Ende zwischen Integration und
- 6:15Operation, ne, dass du dann sagst, OK.
- 6:18Du du willst. Irgendwas erreichen.
- 6:21Hast aber ne klare Trennung zwischen diesen beiden Dingen.
- 6:24Ja, was das jetzt ist das da gehen wir gleich noch drauf ein
- 6:27Segregation ist halt diese ne die Trennung am Ende und
- 6:31Operation bedeutet im Endeffekt hier passiert die eigentliche
- 6:35Logik ne das heißt alles was sozusagen Operation ist ist am
- 6:38Ende wirklich Logik die dahinter steckt, also zum Beispiel
- 6:41Business Logik, es geht um Berechnungen, Entscheidungen,
- 6:44Transformationen frag mich nicht irgendwie sowas ne.
- 6:49Und Integration ist dann im Endeffekt so das Gegenteil.
- 6:52Hier wird, da wird sozusagen an der Stelle von der Integration
- 6:55wird nur orchestriert, da wird im Endeffekt nur gesagt, OK pass
- 6:58auf, es wird jetzt Funktion a aufgerufen oder es wird Funktion
- 7:00B aufgerufen. Es ist im Endeffekt nur so ne
- 7:04Art. Ablauf, die irgendwie
- 7:07dargestellt. Wird ne, also du hast so
- 7:09vielleicht. Als kleine Analogie dazu in
- 7:12einem Restaurant ne, das ist ja unser Ding, wir gehen ja gerne
- 7:15essen jetzt. Wird es wieder spannend?
- 7:18Hau. Raus, dass du sagst, du hast
- 7:20halt. Du hast zum Beispiel n Koch und
- 7:21n Kellner ne, sowas haben wir eben öfter mal schon mal gehabt,
- 7:24aber man kann es halt ganz gut erklären daran und der Koch
- 7:27macht halt eben das Essen. Ne das ist halt die Operation,
- 7:30also er tut diese Business Logik die Business Logik ist.
- 7:33Ich koche nehme die Zutaten des Essens und bereite das Essen zu
- 7:36Input Output so nach dem Motto Ne der Kellner allerdings.
- 7:40Ist halt hier an der Stelle die Integration der dann aber sagt
- 7:43OK Pass auf, du willst das und das Essen, ich leite das mal
- 7:46weiter an den Koch bitte das und das kochen, ja dann kommen
- 7:49mehrere Bestellungen rein. Ja es wäre ja zum Beispiel auch
- 7:52blöd wenn jetzt die letzte Bestellung als erstes an den
- 7:54Koch geht und die Person die als erstes im Restaurant war und
- 7:58bestellt hat aber als letztes quasi das Essen kriegt ne also
- 8:01es geht so n bisschen um diesen Ablauf, um die Organisation, was
- 8:05muss wann gemacht werden und der Koch.
- 8:07Ne, das war die jetzt also erstmal der Kellner Integration
- 8:10und der kocht die Operation, der bereitet dann im Endeffekt diese
- 8:13Dinge zu. Ne, ja genau 2 Köche, also nicht
- 8:17nur die Reihenfolge des Essens, sondern dass jeder auch sein
- 8:19richtiges Essen bekommt. Also gut, das find ich find das
- 8:25ist n gutes Beispiel, auch wenn es jetzt wieder Restaurant und
- 8:27Essen ist. Aber es zeigt halt ganz klar
- 8:30warum es Sinn macht ne also das Prinzip sagt Ja.
- 8:34So gesehen erstmal nichts weiter als trenne klar den Operation
- 8:39Anteil vom Integration Anteil und es kann niemals beides sein.
- 8:44Also n Koch kann nicht gleichzeitig auch n Kellner
- 8:46sein, Kellner kann nicht auch Koch sein also klar vielleicht
- 8:50kann ein Koch mal es gibt 2 Köche und der arbeitet heute als
- 8:53Kellner OK Diskussion ja OK. Aber in diesem Prinzip geht es
- 8:59halt darum, in dem Moment, wenn es sozusagen ausgeführt wird, ne
- 9:03oder halt auf Code ebene, dass ich sage, OK, das ist halt immer
- 9:05Integration, ja dann ist bei der Analogie n bisschen schwammig,
- 9:09aber ansonsten passt das. Ich stell mir das gerade so vor,
- 9:12dass der Kellner sagt, kann ich ihre Bestellung aufnehmen.
- 9:14Ah OK, eine Lasagne, vorzügliche Wahl, dann klebt, dass ich so n
- 9:17schnorrisser. Angebe der.
- 9:18Sie wird so aufgibt. Dann.
- 9:22Aber genau das ist, was du gerade beschrieben hast.
- 9:24Das Problem, was quasi dieses Prinzip adressiert, weil wenn
- 9:29man sich jetzt vorstellt, der Kellner nimmt die Bestellung
- 9:32entgegen, sagt vorzügliche Wahl, klebt sich den Schnorriss an und
- 9:35geht in die Küche, fängt an zu kochen und kommt dann irgendwann
- 9:39mit dem Essen wieder. Das wird natürlich irgendwann im
- 9:43Chaos, je mehr Interaktion sozusagen da ist, ne je mehr
- 9:48bestellt wird je mehr gekocht werden muss.
- 9:51Das ist ja dann am Ende kein klares Aufgabengebiet mehr, und
- 9:54das heißt, das wird irgendwann im Chaos versinken, sag ich mal.
- 9:59Das ist ja so das, was man versucht zu adressieren damit ne
- 10:02und man kann das ja auch ganze mal n bisschen technischer
- 10:06machen, ne also die Analogie ist ja immer gut um reinzukommen,
- 10:10aber jetzt nehmen wir mal n Beispiel, was schon sehr codenah
- 10:14ist, sag ich mal um das Ganze auch n bisschen zu
- 10:16verdeutlichen. Nehmen wir uns mal als Beispiel
- 10:20das hatte ich in einem Artikel gesehen das fand ich auch ganz
- 10:22gut wenn wir uns jetzt so ne Art rechnungssystem vorstellen ne
- 10:26dann hat ja so n System oder so ne rechnungssoftware zum
- 10:30Beispiel NEAP System oder was auch immer das jetzt am Ende ist
- 10:33ne hat ja am Ende verschiedene Bestandteile also beispielsweise
- 10:37kann es n frontend haben worüber ich denn meine Eingaben machen
- 10:40kann Es gibt n backend es wird ne Datenbank geben
- 10:43logischerweise wo Sachen gespeichert werden.
- 10:45Und wenn man sich jetzt vorstellt, wir haben so n
- 10:47rechnungssystem und wollen jetzt ne neue Rechnung anlegen, ja
- 10:51dann kann es natürlich sein. OK, das Backend sagt Pass auf
- 10:56create invoice, die Funktion hab ich für dich ja also einfach ne
- 11:00Rechnung erstellen, das klingt jetzt erstmal gut ja gut ich
- 11:03will ja auch ne Rechnung erstellen, hier hast du die
- 11:04Daten die du brauchst und jetzt erstell mal ne Rechnung so das
- 11:07ist für mich jetzt so der Ablauf.
- 11:10So, und das Backend denkt sich jetzt, OK, ich guck mal die
- 11:12Daten durch, ich analysier die Daten, ich mach vielleicht noch
- 11:16Berechnung sowas wie steuerberechnung ne das wird
- 11:18automatisch ermittelt, dass die Rechnung halt auch richtig
- 11:21ausgeschrieben ist sozusagen. Vielleicht werden noch Daten
- 11:25eingetragen, die irgendwie aus der Datenbank gezogen werden,
- 11:28sowas wie Kundendaten oder die Firmendaten ja, also was halt so
- 11:31auf ne Rechnung noch gehört und am Ende muss ja so ne Rechnung.
- 11:35Auch noch abgelegt werden. Ne, das heißt in deinem System
- 11:38im Endeffekt landet sie in der Datenbank und das sind ja jetzt
- 11:41so relativ viele Prozesse, die da passieren unter dem Wunsch
- 11:47eine Rechnung zu erstellen. Ne von oben sag ich mal was dann
- 11:51unter der Haube passiert ist ja schon ziemlich viel und da setzt
- 11:54jetzt das Prinzip an und sagt ja genau das ist das Problem, du
- 11:58machst jetzt. Einerseits Berechnung sowas wie
- 12:01Steuern, dann ziehst du noch Daten irgendwo her, gleichzeitig
- 12:05kümmerst du dich noch um das Speichern der Rechnung, das
- 12:07heißt du hast auch irgendwie Datenbank Zugriff und das ist
- 12:10einfach Operation, zum Beispiel die Steuerberechnung und
- 12:15Integration Zugriff auf die Datenbank, Sachen abspeichern,
- 12:19alles in einem ja und ich ruf die Funktion auf und hoffe
- 12:23einfach, dass es gut geht und hab auch keine Flexibilität.
- 12:26Zum Beispiel ne andere Integration zu machen, es nicht
- 12:29in der Datenbank zu speichern, sondern weiß ich was ganz
- 12:32woanders oder ich möchte ne andere Steuerberechnung haben
- 12:35oder so. Das ist halt alles sehr eng
- 12:39verkapselt so ja du musst. Halt sehr krass.
- 12:42Eingreifen dann am Ende in den Code, wenn du irgendwas ändern
- 12:44willst. Ich hab mir das ungefähr so
- 12:47vorgestellt, weil wir auch wie gesagt davon auch das erste Mal
- 12:50so, ich sag mal richtig gehört haben, also war uns ja kein
- 12:54Begriff. Und ich hab mir es ungefähr so
- 12:57vorgestellt dass du dann wenn du dieses IOSP nicht machen würdest
- 13:01ne dass du dann einfach sagst du hast zum Beispiel ne Funktion
- 13:04die heißt do everything ne so und das ist dann sozusagen auf
- 13:09der metaebene jetzt die Integration ne also die
- 13:13schlechte Integration die nicht vorhandene Integration weil die
- 13:15sagt mach einfach jetzt alles ne also egal was und dann werden
- 13:19halt ganz viele verschiedene Sachen gemacht dann wird gesagt
- 13:21ja OK aber angenommen du hast zum Beispiel.
- 13:25Variante a dann mach halt Variante A und ansonsten mach
- 13:28halt b oder vielleicht sogar C ne, dass dieses Ganze auf
- 13:32splitten, was eigentlich ne eigene Funktionalität irgendwie
- 13:36benötigen würde, dann im Endeffekt in Operation liegt.
- 13:40Ne, also in einer Schicht, die am Ende alles macht, so hab ich
- 13:44mir das zumindest vorgestellt. Genau.
- 13:47Und wenn man jetzt dieses ios p denn mal auf das Beispiel
- 13:50anwendet, ne und kein do Everything oder einen create
- 13:54invoice haben möchte, dann müsste man sich jetzt halt
- 13:57überlegen, wie kann ich den Operation Anteil und den
- 14:01Integration Anteil klar voneinander trennen, dass es
- 14:03halt sauber ist und ich quasi Funktionen habe, die immer nur
- 14:09entweder Operation sind oder Integration.
- 14:12So und dann kann man ja einfach mal so durchgehen, was hatte ich
- 14:15gesagt zum Beispiel? Steuern berechnen, das ist ganz
- 14:20klar ne Operation, ne, da darf da ist ne Logik drin, da ist ne
- 14:24Berechnung drin, also irgendeine Formel, wahrscheinlich auch noch
- 14:28irgendwelche Bedingungen und das sind alles Anzeichen bei dem
- 14:31Prinzip sagt man auch hast du sowas wie IF else drin, hast du
- 14:36ne Schleife da drin? Das sind oder richtige
- 14:40Berechnungen das sind alles Anzeichen für den Operation Teil
- 14:43und ich finde das klingt auch logisch also da gehe ich mit dem
- 14:45Prinzip ja auch voll mit das das würde ich auch sagen ja das ist
- 14:48Operation so ja also das sind logiken am Ende so und die
- 14:53orchestrierung wie du es genannt hast diese Integration ist ja im
- 14:56Prinzip sicherzustellen dass der richtige Ablauf passiert ne dass
- 15:01ich erst meine ganzen. Items nenn ich es mal berechnen
- 15:05und erstellen muss die auf die Rechnung gehören bevor ich
- 15:08überhaupt ne Rechnung anlegen kann, dass ich danach
- 15:11sicherstellen muss, dass es auch gespeichert wird in der
- 15:14Datenbank ist auch n extra Schritt und dann komm ich halt
- 15:17von einem do Everything zu calculate Texas, ich nenn es mal
- 15:25einfach so ne create invoice. Und so weiter.
- 15:30Und dann hab ich halt verschiedene Funktionen, die ich
- 15:31aufrufe. Safe Invoice von mir noch am
- 15:34Ende ne und dann kann ich das so aufrufen.
- 15:37Ich seh n klaren Ablauf, ich hab so n Integration ne Funktion die
- 15:40nur Integration macht, das heißt sie kümmert sich nicht darum wie
- 15:42es passiert, sondern was. Passiert nicht wie, sondern was,
- 15:46ja. Genau ne Ich hoffe es war
- 15:48richtig rum ja und das heißt es wird einfach nur gesagt das muss
- 15:53passieren das muss passieren das muss passieren ob bei Safe
- 15:56invoice das jetzt lokal auf der Platte abgelegt wird oder in
- 16:00einer Datenbank abgespeichert wird ist ja das wie und das
- 16:03interessiert den integrationanteil nicht und
- 16:05durch diese klare Trennung kann ich halt sagen ich kümmere mich
- 16:08um Integration oder ich kümmere mich um Operation und kann das
- 16:12getrennt und entkapselt voneinander betrachten was
- 16:15natürlich Vorteile einfach mit sich bringt.
- 16:17Ne. Was ich halt interessant finde
- 16:19ist wenn du dir das jetzt so überlegst dann hast du ja
- 16:21vielleicht irgendwie so ne Art sagen wir mal so ne Art
- 16:24baumstruktur ne du hast du fängst irgendwo an und dann wird
- 16:29durch die Integration halt erstmal so durchgetingelt und
- 16:31gesagt OK warte mal wir müssen jetzt das und das machen das
- 16:34kommt als erstes dann kommt das dann kommt dies oder jenes Na
- 16:37Moment vielleicht kommen wir jetzt aber auch an den Punkt wo
- 16:40wir diese Berechnung ausführen müssen oder diese ne dass du am
- 16:43Ende sozusagen in diesem? Ich nenn es jetzt mal, ist jetzt
- 16:48nicht fachlich ganz richtig, aber an diesem Entscheidungsbaum
- 16:50sozusagen irgendwo unten angekommen bist, wo dann diese
- 16:53tatsächliche Business Logik für diesen entsprechenden Case, der
- 16:56halt irgendwie jetzt relevant ist, am Ende angewendet wird?
- 16:58Ne, das konnte ich mir an sich auch ganz gut vorstellen, aber
- 17:04was mir da so in den Kopf kam war dann so OK.
- 17:06Warte mal, wir haben ja gerade gesagt, IF Else sind Dinge die
- 17:09irgendwie auf. Logik.
- 17:12Sagen wir mal, schließen lassen ist Operation.
- 17:16Wenn ich mir jetzt aber sage, OK, es ist also ne Art Baum, wo
- 17:19du immer nur sagst, OK, wir müssen irgendwie an ne Operation
- 17:22kommen, die dann am Ende ausgeführt wird, also halt
- 17:25irgendwie Entscheidungen checken müssen, OK das oder das ist für
- 17:30mich ja schon so ne Art. OK, entweder du machst das IF
- 17:33oder du machst das Else ne, also das heißt prinzipiell ist es ja
- 17:38vielleicht so n bisschen dann auch irgendwie aufgeweicht, weil
- 17:41du kannst ja gar nicht unbedingt sagen.
- 17:44Entweder das oder das. Wenn du kein FL verwenden darfst
- 17:47und es dann schon wieder Operation wäre, weißt.
- 17:49Du ja, und das find ich ganz interessant, weil beim
- 17:53Recherchieren quasi von diesem Prinzip bin ich auch drauf
- 17:57gestoßen, dass selbst die Verfechter und Begründer nenn
- 18:01ich es mal ne. Sagen ja.
- 18:05OK, das ist eine Stelle, wo quasi auch so Entscheidungen in
- 18:09den Integration teil kommen können, weil sonst stellt sich
- 18:12natürlich als erste Kritik daran die Frage, ja gut, jetzt muss
- 18:18ich aber bedingt einen Ablauf haben, ne eine Orchestrierung
- 18:22zum Beispiel muss ich steuern berechnen oder nicht, um das
- 18:27Beispiel noch mal zu nehmen, ne einfach nur zu sagen in dem und
- 18:30dem Fall. Muss ich jetzt calculate Texas
- 18:34aufrufen oder nicht beispielsweise?
- 18:37Und das ist halt ein richtig spannender Punkt dabei, weil
- 18:40wenn du das und das gilt, da muss man fairerweise sagen, das
- 18:43gilt aber auch für alle Prinzipien, das haben wir auch
- 18:45bei jeder Principal Folge gesagt, ein Dogmatisches
- 18:50umsetzen. Bringt zwar noch immer so n
- 18:54bisschen die Vorteile mit, aber man kauft sich auch wieder viele
- 18:57Nachteile ein und genauso ist es für mich an dieser Stelle auch
- 19:00und ich fand es interessant, dass sozusagen die Fans davon
- 19:03und die das Ganze ins Leben gerufen haben auch sagen, Nein,
- 19:06nicht dogmatisch verfolgen, sondern wirklich das n bisschen
- 19:09weicher betrachten und da fand ich die Lösung dahinter, die
- 19:13vorgeschlagen wurde irgendwie recht spannend, weil zum
- 19:17Beispiel zu sagen wenn das keine Ahnung, ich muss mir irgendwas
- 19:23ausdenken jetzt ja, ob das jetzt Sinn macht oder nicht, aber wenn
- 19:25zum Beispiel die Rechnung in einem Land wie Deutschland zum
- 19:30Beispiel gestellt wird, dann berechne die Steuern ansonsten
- 19:34andere, beispielsweise ne, das heißt, wir haben jetzt mal so
- 19:37konstruiert ne fallunterscheidung
- 19:39beziehungsweise ne Bedingung, ne, also wenn das Land
- 19:42Deutschland ist, dann macht das ansonsten was anderes.
- 19:45Und anstatt in dieser Integration Funktion.
- 19:50Dann zum Beispiel zu sagen, If Country ist gleich Germany, so
- 19:55ne, dann sollst du das in eine Funktion auslagern, weil dann
- 20:00ist diese Funktion wiederum ja Operation.
- 20:03Dann hast du zwar die Unterscheidung in deine
- 20:05Integration Funktion, aber die Entscheidung, also wie wird
- 20:10getroffen in einer Operation Funktion und damit ist es quasi
- 20:14wieder sauber genug gekapselt. Um das Prinzip einzuhalten,
- 20:19dachte ich mir OKOKOKOK verstehe ich, kann ich auch in gewissen
- 20:25Grad leben mit der Lösung, aber es hat mir auch n bisschen
- 20:28Kopfschmerzen bereitet, aber ich weiß nicht wie du das siehst.
- 20:32Immer kurz zusammenfassen also im Endeffekt wäre es ja so, dass
- 20:34du die Integration hast, die zum Beispiel sagt, Ich mach a mach B
- 20:39berechne Steuern, mach C oder irgendwie sowas ne und.
- 20:43Dieses berechne steuern, würdest du aber aufrufen auf so ne Art
- 20:46Zwischenebene die dir sagt, Check also berechne Steuern am
- 20:51auf der Klasse, entscheide welche Steuern du berechnen
- 20:54musst. So weißt du so und dann hast du
- 20:57quasi diese Zwischenschicht die dann sagt OK angenommen das oder
- 21:01das, dann berufe ich vielleicht zum Beispiel den.
- 21:05Deutschen Steuerservice auf oder den was weiß ich dänischen
- 21:08Steuerservice oder so ne, also dass man halt das so dann
- 21:11trennen würde und demzufolge hättest du ja dann irgendwo auch
- 21:15ne Operation auf dieser Ebene halt an diesem Knotenpunkt, der
- 21:19da drüber sitzt zu entscheiden mach ich das oder das ne, also
- 21:23welchen steuerservice ruf ich jetzt auf?
- 21:25So als Beispiel hab ich das so richtig verstanden.
- 21:27Genau, ja. Also.
- 21:31Ja, also im Prinzip ist es irgendwo auf der Integration
- 21:33Ebene aber noch mal ausgelagert zu einer eigenen Operation Ebene
- 21:37und dadurch ist es OK. Das war so die Argumentation
- 21:40dahinter, und da geh ich halt wie gesagt auch mit, weil ein
- 21:45Punkt warum es das IOSP gibt, oder?
- 21:48Was so der Benefit dabei ist, ist ja testbarkeit in dem
- 21:51Moment, wenn ich das klar voneinander trenne, kriege ich n
- 21:55Riesenbonus in Sachen Unit Test. Ja, also ich kann halt auf
- 21:58Operation Ebene wunderbare Unit Tests ansetzen, ne, weil das
- 22:02halt wirklich nur so Logiken beinhaltet, die ich dann einzeln
- 22:05abtesten kann und sicherstellen kann, dass meine Logiken
- 22:08funktionieren und auf Integration Ebene wie der Name
- 22:11schon sagt, kann ich halt dann schon nachher Richtung
- 22:13Integration Test gehen und das auch sehr gut umsetzen.
- 22:16Das versteh ich und das ist wirklich n großer Benefit, dass
- 22:19es sich lohnt, sich darüber Gedanken zu machen, welche
- 22:24Gefahr ich dabei sehe. Und da bin ich mal gespannt, wie
- 22:26du das siehst. Ja, wir sind weg vom Spaghetti
- 22:30Code, den ich anfangs genannt hatte mit der Create invoice, da
- 22:34passiert alles drin, das schreit schon nach Spaghetti Code, der
- 22:38da am Ende hinauskommt. Hinzu mit dem neuen Prinzip,
- 22:42wenn ich es jetzt ganz, ganz streng verfolge, dass ich bei
- 22:45dem sogenannten Ravioli Code am Ende bin, dass ich es halt so
- 22:49krass modularisiere, dass das auf Kosten der Lesbarkeit geht,
- 22:55also dass ich am Ende nicht mehr weiß, was passiert hier
- 22:58eigentlich, weil ich nur noch hin und her springe und jetzt
- 23:01muss ich da, OK, was macht die Funktion?
- 23:03Ja OK, warte mal, aber das passiert nur, wenn ich warte in
- 23:05die Funktion reingucke also du. Du hast halt, ich finde es halt
- 23:10witzig das Ravioli Co zu nennen, weil du hast ja diese kleinen
- 23:12ganz vielen Zacken so außen muss ich sagen, war bei mir jetzt
- 23:15auch nicht so mega geläufig. Ich hatte das schon ein 2.
- 23:18Mal gehört, aber es macht natürlich Sinn wenn man mal
- 23:20drüber nachdenkt, dass du halt dich quasi so fein
- 23:23modularisierst und dass du halt überall diese.
- 23:27Zacken hast sozusagen ne. Na, du hast diese Zacken oder
- 23:30diese Batches, weil ein Ravioli halt so ein einzelner Ravioli
- 23:33ist. So n Spaghetti ist ja so n
- 23:34riesiger Spaghetti, weil dass du sagst, OK, du hast halt einmal
- 23:37sozusagen ne riesen Funktion, die ewig lang ist und genau bei
- 23:40Ravioli sind es halt irgendwie so batches.
- 23:42Ich find es aber lustig, weil. Ich.
- 23:44Könnte schwören, ich hätt das schon mal gehört, aber hätten
- 23:49hätt ich, wär ich jetzt nicht quasi bei wegen dieser Folge
- 23:52wieder darüber gestolpert. Ich, ich hätte es nicht
- 23:55reproduzieren können, also im Sinne von ich aus meinem Mund
- 23:59wäre nicht Ravioli Code mal wieder rausgekommen.
- 24:02Weil ich es einfach. Verdrängt hab das ist.
- 24:04Das das müssen wir jetzt wieder vor uns mitnehmen.
- 24:05Lass doch mal das Gute, wenn wir uns Thema gerade so Community
- 24:08wünsche uns angucken, da können wir mal selbst mal ne Menge
- 24:11lernen bei und wieder auffrischen.
- 24:13Kennst du diese, diese Nudeln, die aussehen, wieso
- 24:16Schmetterlinge, die haben auch irgendein Namen, frag mich ob es
- 24:20so n Code gibt. Die haben auch irgendein Namen,
- 24:23ja. Weiß nicht, komm ich nicht
- 24:26drauf. Ich überleg grad, vielleicht
- 24:28fällt es mir noch ein. Ich, ich, ich kenn nur Penne,
- 24:32aber das ist was anderes. Na, welches Prinzip könnte das
- 24:36symbolisieren? Arigatoni gibt es auch noch, OK,
- 24:39aber wieder auf dem Bild. Jetzt hast du alles rausgehauen,
- 24:42was du weißt, OK, deswegen kommen wir mal wieder zu dem
- 24:45Thema, wo du dich auf jeden Fall besser auskennst als mit Nudeln
- 24:50kochen. Kann ich.
- 24:51Lass uns noch mal über die Tests reden.
- 24:54Speziell über die Trennung, Operation, Integration.
- 24:56Ich hab es ja gerade schon so n bisschen angeteasert.
- 24:59Wo siehst du denn noch so Vorteile da drin für die
- 25:02Testbarkeit für die Testbarkeit? Na ja, also prinzipiell ist es
- 25:11schon auf jeden Fall nicht verkehrt, dass du die Logik
- 25:15abtesten kannst. Ich, ich denk mir halt so.
- 25:17Ja, also auf Integrationsebene kannst du Integrationtests
- 25:20nutzen, das sagt ja auch schon irgendwie der.
- 25:23Ich sag mal der Name aber trotzdem denk ich mir immer so
- 25:27Na OK aber man muss es auch immer noch n bisschen
- 25:30differenzieren find ich so n bisschen weil wenn du irgendwo n
- 25:34Service hast ne wo du am Ende trotzdem irgendwie an die
- 25:37Datenbank rangehst innerhalb dieses Services was ja auch
- 25:40öfter mal ganz gerne gemacht wird also angenommen du sagst du
- 25:42hast irgendwo dein dein dein Blatt unten wo deine Operation
- 25:49sitzt zum Beispiel ja OK aber trotzdem kann er.
- 25:52An diesem Blatt irgendwo der Zugriff dann auf ne Datenbank
- 25:55hängen, das heißt irgendwas muss ja trotzdem dann mehr oder
- 25:58weniger gemockt werden. Weißt du oder gefaked werden
- 26:01oder was auch immer. Also es ist natürlich manchmal
- 26:04auch so, dass du einfach nur n Service hast, der vor sich
- 26:05hinarbeitet, wirklich Input kriegt und Output bekommt.
- 26:09Ja, aber jetzt wo ich drüber nachdenke ist es wahrscheinlich
- 26:14eher so gemeint, dass du erst diesen diesen Rückgabewert
- 26:18bekommst und dann die Integration wieder sagt.
- 26:21OK und jetzt? Gibst du das, machst du den
- 26:24Aufruf für die Datenbank. So könnte ich es mir noch
- 26:26vorstellen. Ja, jetzt wo ich gerade drüber
- 26:29nachdenke, wenn man das so macht, dann ist es wieder gut,
- 26:33dann bin ich dabei, aber ich hab gerade den Faden verloren, du
- 26:35hast gesagt, Vorteile für die Testbarkeit, na.
- 26:41Und dann mir noch mal kurz so n Kleinen so n kleinen, wie sagt
- 26:45man ne Wegweise geben worauf ich so n bisschen hinaus möchte,
- 26:49weil das fand ich interessant. Es wird ja argumentiert, dass
- 26:53ich durch IOSP so gut wie keine Mogstabs mehr brauche.
- 26:58Die Test Setups werden viel einfacher, gehst du damit, also
- 27:02siehst du das auch oder glaubst du, dass es vielleicht auch
- 27:05irgendwo wieder Grenzen gibt? Mhm, ich sag mal so.
- 27:09Also. Weil du dieses Beispiel.
- 27:12Was ich gerade genannt hab, so, wenn man es so durchzieht, dann
- 27:14hast du sicherlich die Möglichkeit da weniger von
- 27:18machen zu müssen. Ja, also wenn du das wirklich
- 27:20so. Aufziehst und sagst OK, die so n
- 27:24Service zum Beispiel schreibt nicht direkt in in in Repo oder
- 27:28so ne, damit du halt wirklich dieses diese diese Unit
- 27:31testbarkeit hast. Ne dass du wirklich sagst OK du
- 27:33hast halt n Service der Input bekommt, er erzeugt Output, den
- 27:37kannst du super testen und der Output wie er in der Datenbank
- 27:41geschrieben wird, das ist dann wirklich Integration Test mäßig
- 27:43wenn man das so macht dann finde ich ist es in Ordnung dann dann
- 27:47kann man diesen Benefit mitnehmen.
- 27:49Aber man muss natürlich dann, es ist halt n bisschen find ich so.
- 27:55Software Design zieht, also zieht man es durch oder zieht
- 27:58man es nicht durch und wie wie genau wie stark zieht man es
- 28:03dann am Ende doch durch? Also.
- 28:04Es ist ein. Bisschen bescheuert, aber wie du
- 28:06schon meintest, wenn man es wirklich zu über, also zu krass
- 28:09übertreibt, dann hast du halt diesen Ravioli Code und wenn du
- 28:13es aber zu. Wenn du so so anfängst, aber
- 28:16nicht so richtig durchziehst bis zu einem gewissen Punkt, dann
- 28:20bringt dir das irgendwie auch wieder nichts.
- 28:21Also du brauchst diesen Sweet Spot in der Mitte und nur dann
- 28:24würde ich sagen, bringt es irgendwie auch wirklich was.
- 28:27Ja. Ich glaub, ich hab deine Frage
- 28:29immer noch nicht ganz. Beantwortet.
- 28:30Nein, also ja doch, es geht ja genau das sind genau die
- 28:33Überlegungen, die ich mir dabei auch überlege, die Überlegung,
- 28:38die ich auch anstelle. Man denkt natürlich erstmal so,
- 28:41OK, jetzt hab ich so Operation Funktionen und die haben
- 28:43irgendwie keine Abhängigkeiten im Sinne von anderen Funktionen.
- 28:48Ne, da ist auch irgendwie keine Datenbank im Weg oder irgendwie,
- 28:50das ist wirklich nur Logik, nur ne Berechnung dann OK gut dann
- 28:55kann ich ja super geile Unit Tests schreiben dafür, da geh
- 28:57ich auch mit mit dem Prinzip aber wie schwer ist es dahin zu
- 29:01kommen und welche was kauf ich mir dafür ein?
- 29:03Das frag ich mich so ne natürlich.
- 29:06Brauche ich keine Mogs oder Stabs, wenn ich ne kleine
- 29:11berechnungsfunktion abteste? Ja, aber die ist so autark, die
- 29:16hat Eingabe und Ausgabe und das kann ich halt testen, dass das
- 29:19Richtige rauskommt. Aber wenn du jetzt mal n etwas
- 29:23komplexeres System nimmst, wie einfach ist das so umzusetzen,
- 29:27dass das auch. Nehmen wir jetzt zum Beispiel
- 29:31mal n Backend. Ja, dass das genauso auch alles
- 29:33funktioniert unter der Haube, oder wo muss man dann sagen, du
- 29:37Pass auf, ich muss das jetzt aber mal Kapseln oder
- 29:39zusammenfassen, weil es auch irgendwo zusammengehört und dann
- 29:43ist es halt kein sauberes IOSP mehr.
- 29:46Ja, ich stell mir zum Beispiel die Frage, wenn du jetzt mal
- 29:50sagst, so ne ganz klassische Aufbau, wir haben so, weil du ja
- 29:52meintest n Service und Datenbanken und wir haben zum
- 29:55Beispiel noch n Controller wo ich jetzt quasi.
- 29:58Endpunkte bereitstelle OK dann so n Endpunkt ist irgendwo
- 30:04Integration, ja der managt quasi was passieren soll, der ruft
- 30:07dann vielleicht einfach nur statischen Server sag ich schon
- 30:11n Service auf und die Rückgabe wird dann halt verwertet
- 30:16sozusagen ne also jetzt nicht, dass da irgendwas berechnet wird
- 30:18oder so OK geh ich mit dann gehen wir runter auf den Service
- 30:22im Baum sind wir so auf der nächsten Ebene ja und was macht
- 30:24n Service ja der hat. Im Prinzip guckt er so was hat
- 30:28er für Daten und interagiert mit den entsprechenden Repositories.
- 30:32Wenn wir jetzt so n ganz einfaches Crute Backend mal
- 30:34nehmen ja und sagen OK, ja wir wollen hier nur Sachen
- 30:38speichern, auslesen, verändern ne, aber da muss er ja irgendwie
- 30:42auf dem Repository arbeiten später oder zumindest die
- 30:45Aufrufe machen gut kannst du sagen im Baum OK ist es wieder
- 30:49irgendwie so n Knoten aber kein Blatt also kein keine Operation
- 30:53sondern der. Ist es weitere Orchestrierung,
- 30:56was jetzt aufgerufen wird? Und irgendwann bist du unten und
- 31:00sagst OK, das wird jetzt in die Datenbank gespeichert?
- 31:03Ja ja, gehst den Baum wieder hoch, sagst hier ist das
- 31:07Ergebnis Service sagt alles klar hier ist das Ergebnis gehst hoch
- 31:11Controller nimmt das Ergebnis und schreibt es zurück sozusagen
- 31:14also antwortet auf den Request. Ja dann das klingt erst mal
- 31:18wunderbar, dann gehst du einmal n Baum runter und wieder hoch.
- 31:21Finde ich würd ich jetzt sagen IOSP Check, so kann man so
- 31:25machen, aber ist das auch wirklich die Realität, dass das
- 31:29alles so einfach ist? Oder hat der Service nicht mal
- 31:32ganz schnell noch irgendwie ne Unterscheidung oder zum Beispiel
- 31:35ne Auswertung drin, dass du sagst so ja gut, was hab ich
- 31:38denn für Parameter bekommen? Ja n Key ja man will irgendwas
- 31:42anhand von einem Key aus der Datenbank holen ja aber der Key
- 31:44ist leer, also hier Exception beispielsweise.
- 31:48Ist das denn schon Operation? Muss ich ne Funktion aufrufen,
- 31:52die nur auswertet, dass dieser Key nicht leer ist und so weiter
- 31:58also weißt worauf ich hinaus möchte und das deckt sich ja mit
- 32:01dem was du meinst. Wie sauber zieh ich das durch?
- 32:05Ja, aber das ist ich find das ist ich hab auch mal n relativ
- 32:10großes Refactoring schon n bisschen länger her in der
- 32:13Software gemacht, weil es halt einfach dran war.
- 32:16Es war wichtig, musste gemacht werden.
- 32:18Und da gehst du halt wirklich, da gehst du halt einfach.
- 32:23Also wir sind auch wirklich da im Pair dann zusammen
- 32:26durchgegangen, verschiedenste Klassen, also es ich weiß gar
- 32:30nicht, ob das wirklich alles war, aber es war auf jeden Fall
- 32:32n Strang so n ich sag mal n feature ne wirklich n großes
- 32:36Feature was diese Software bereit gehalten hat oder zur
- 32:40Verfügung gestellt hat und man. Also wir sind dran gegangen in
- 32:46der in, in dem in dem Gedanken, dass wir gesagt haben, wir
- 32:48wollen das einfacher machen, weil keiner mehr, wenn er das
- 32:51irgendwie anfasst und da was machen muss, versteht, was da
- 32:54passiert. Also fachlich konnte man es
- 32:57irgendwie nicht verstehen, technisch wurde aber alles
- 32:59richtig umgesetzt, also ohne dass man jetzt irgendwie sagt,
- 33:01so OK, das ist irgendwie falsch, ne, es ist war schon richtig,
- 33:05nur dass halt auch der ganze Code sehr technisch beschrieben
- 33:09war, also du konntest quasi überhaupt nicht mehr erkennen.
- 33:12Auch fachlich. Wie ist irgendwas da drin, was
- 33:14passiert da ne? Also und wenn ich jetzt überlege
- 33:17ne noch mal rückblickend, dass man vielleicht zum Beispiel IOSP
- 33:20anwenden würde, dann ist es ja vielleicht nicht verkehrt, also
- 33:25haben wir in dem Moment zumindest nicht wissentlich
- 33:27gemacht und wir haben es auf jeden Fall refecter zwar, aber
- 33:30auch gar nicht so einfach, weil du dann genau in solche Punkte
- 33:32kommen, die kommst die wo du die du meintest, ne wo du dann sagst
- 33:36ja OK, lass uns das doch einfach sauber auftrennen.
- 33:39Aber so einfach geht das gerade gar nicht.
- 33:40Das ist wirklich gar nicht so easy, das auseinander zu nehmen,
- 33:43weißt du und ich finde aber auch immer, die Frage ist, in
- 33:47welchem, in welchem Frame bewegst du dich, weil wenn du
- 33:52zum Beispiel sagst, du bist jetzt in dieser Klasse und
- 33:54willst innerhalb dieser Klasse es wirklich schön trennen diese
- 33:58Funktionalität, weil du weißt, das ist da sind 2 Dinge
- 34:01ineinander gewurstelt, die gehören separat auseinander und
- 34:04du willst es aber wirklich in dieser Klasse trennen, dann.
- 34:08Bist du manchmal in diesem Frame so stark gefangen, anstatt
- 34:12vielleicht noch mal so n bisschen raus zu zoomen um zu
- 34:14sagen, OK, wir brauchen ja aber vielleicht mehr so ne Art
- 34:18Integration an dieser Stelle, die das ganze orchestriert und
- 34:21sagt was aufgerufen wird und dann trennst du vielleicht im im
- 34:25größten Fall vielleicht sogar auf den Service auf, weil du
- 34:27merkst, dieser Service heißt keine Ahnung, Order Service
- 34:32aber. Da sind 2 Dinge drin, die sind
- 34:35unglaublich krass, weil du dann zum Beispiel vielleicht einmal
- 34:38hast du n Valley Data, der da irgendwie reingemokelt ist und
- 34:43gleichzeitig noch irgendeinen Calculator oder so ne, aber das
- 34:46eine ist, es ist ganz anders, also das kannst du theoretisch
- 34:50trennen, aber wenn du manchmal diesen Frame nicht hast, wenn du
- 34:52dir nicht denkst, OK, ich kann das irgendwie trennen oder ich
- 34:54sollte das jetzt trennen, ne und dann ordentlich auf einer oberen
- 34:57Schicht Orchestrieren zum Beispiel.
- 35:00Dann dann ist das auch schwierig da vielleicht irgendwie was zu
- 35:02refactern und deswegen finde ich ist es gut dass du es sagst dass
- 35:06du sagst ey es ist manchmal wirklich nicht so einfach ne und
- 35:10es ist manchmal auch super schwierig zu sagen ich will das
- 35:12jetzt so durchziehen das ist einfach zu sagen aber es dann
- 35:14auch wirklich so durchzuziehen ja aber auch gleichzeitig wieder
- 35:18in diesem Sweet Spot dass du sagst OK wir wollen jetzt aber
- 35:20auch kein ravioli Code aber das ist schon echt hart ne aber Ich
- 35:25glaube gerade das wissen darum dass man bestimmte Dinge
- 35:28vielleicht. Nach einem bestimmten Prinzip
- 35:30machen kann, wie zum Beispiel IOSP, das kann schon helfen.
- 35:35Also wir, wir haben uns das ja jetzt angeguckt wegen dem Wegen
- 35:39des Community Wunsches und haben ja auch gemerkt, OK, hat
- 35:43vielleicht seine Schwächen, aber gleichzeitig auch eigentlich
- 35:47ganz geile Ideen, also zumindest Betrachtungsweisen ne die.
- 35:50Du da ja. Also es lohnt sich auf jeden
- 35:52Fall diese Denkweise anzunehmen, ne und mal zu challengen also
- 35:56was ich so für mich auch mitnehme ist einfach.
- 35:59Wenn ich refactor, um dein Beispiel noch mal aufzugreifen
- 36:02und um zu entscheiden, was refactor würdig ist und was
- 36:06nicht, ist es ja wirklich nicht schlecht zu sagen, ich gucke mir
- 36:09Funktionen an. Ist es Operation oder ist es
- 36:12Integration oder ist es nicht sogar beides und dann kann ich
- 36:15ja noch so weit gehen, dass ich es ja erkennen, erkennen kann.
- 36:17Zum Beispiel, daran habe ich da Berechnungen drin, habe ich da.
- 36:22Strukturen drin habe ich da schleifen drin.
- 36:25Alles, was wir eingangs erwähnt hatten, was so Anzeichen für
- 36:28Operation sind, das heißt, ich habe irgendwie so eine Art
- 36:30Analyse Tool auch um mein Code ein bisschen zu bewerten, dafür
- 36:34finde ich das zum Beispiel richtig cool oder auch was du
- 36:37meintest um noch mal ganz kurz zurück zu springen mit meinem
- 36:40einfachen Backend Beispiel, ja dann muss ich halt 2 Services
- 36:43machen. Ja okay wäre eine Lösung wenn
- 36:45ich jetzt sage ey ich muss Sie aber validieren ob der Input in
- 36:48Ordnung ist. Das ist jetzt in meinem Service
- 36:50drin, der mit dem Repository arbeitet.
- 36:53Ja nee, er macht doch n zweiten Service, der im Vorfeld das
- 36:55klärt und der Controller orchestriert sozusagen weiter
- 36:58und gibt dann einfach nur das Ergebnis zurück an den also ne
- 37:02Response ja und so kann man das aufbauen, klar, aber die Frage
- 37:05ist wo ist der Sweetspot zwischen richtig gut modularen
- 37:11Code der sich gut testen lässt und.
- 37:14Ravioli Code nenn ich es jetzt einfach mal so, weil das ja
- 37:16immer in dem Zusammenhang genannt wird.
- 37:18Ne und das ist glaub ich viel Erfahrung am Ende und bedarf
- 37:22mehrere refactors Refactorings wie ist denn wie sagt man das
- 37:27eigentlich das Refactors? Klingt hier so super.
- 37:32Ne refactorings ne was so. Ja.
- 37:36Und das ist n Lernprozess. Das ist wie bei jedem Prinzip so
- 37:41und in. Interessanterweise, was ich
- 37:43wirklich spannend fand dabei ist, wenn man sich das ganze Mal
- 37:46jetzt im Zusammenhang mit anderen Prinzipien mal vor Augen
- 37:50führt, was die eigentlich aussahen, ja, was sagt jetzt
- 37:53IOSP aus und beispielsweise auch sowas wie Single Responsibility
- 38:00Principle, ne, also jede jedes Element hat quasi eine klare
- 38:06Aufgabe. Ja.
- 38:08Und das ist schon ziemlich deckungsgleich, wenn man so
- 38:10drüber nachdenkt. Weil wenn ich sage, Operation
- 38:12Integration ist getrennt, das heißt, diese Funktion macht nur
- 38:15Operation, das ist sehr wahrscheinlich eine klare
- 38:18Aufgabe, anders wird es halt schon gar nicht mehr umsetzbar,
- 38:21wirklich sein, ne, sonst mixt du ja wieder Integration da rein,
- 38:25wenn du jetzt wieder mehrere Sachen da abhandelst.
- 38:27Das heißt, diese beiden Prinzipien haben auch irgendwo
- 38:30nen Nenner oder das dry Prinzip, ja Don't repeat yourself.
- 38:37Ja. Einfach, wenn man sich überlegt,
- 38:40was es aussagt. Ja, wiederhol dich nicht selbst.
- 38:43Nutze Code, den du geschrieben hast wieder und in dem Moment,
- 38:47wenn ich jetzt wieder Operation und Integration klar trenne,
- 38:49habe ich ja sehr wahrscheinlich auch Operation Funktionen, die
- 38:52ich wieder verwenden kann. Ne.
- 38:55So also das spielt auch sich wieder gegenseitig in die Karten
- 38:58und deswegen glaub ich es gibt kein richtig oder falsch an der
- 39:02Stelle. Wie bei allen Prinzipien,
- 39:04sondern und das find ich richtig cool, dass du das gesagt hast,
- 39:07weil das Fazit hab ich auch so, du kannst ja gleich noch, falls
- 39:10du noch andere Punkte hast noch mal sagen, aber für mich war
- 39:13auch so n Fazit einfach zu sagen es gibt einfach gute
- 39:18Denkanstöße, ja. Es ist nicht in Stein gemeißelt,
- 39:22sondern es ist n weiteres Tool n weiteres Prinzip um sich die
- 39:27richtigen Fragen zu stellen in Sachen Codequalität und das
- 39:31finde ich es super. Deswegen würde ich sagen ich
- 39:34kann das Prinzip nicht, aber ist cool, kann man drüber
- 39:38nachdenken, besonders sich die Frage zu stellen, zum Beispiel
- 39:40beim Refect, dann Operation oder Integration.
- 39:45Ja, am Ende ist es glaub ich auch wirklich einfach ne auch ne
- 39:47Erfahrungssache. Was kann man wo gut einsetzen
- 39:49beziehungsweise wie du meintest es ist ja auch deckungsgleich
- 39:52wenn du das eine Prinzip verstanden hast und umsetzt
- 39:55kannst du auch relativ schnell, vielleicht auch automatisch das
- 39:58andere Prinzip umsetzen, obwohl du es vielleicht gar nicht so
- 40:01kennst. Ja, also das muss man ja auch
- 40:03dazu sagen, aber trotzdem finde ich um das noch mal auch
- 40:06zusammenzufassen. Wenn du so NIOSP Prinzip zum
- 40:10Beispiel jetzt kennengelernt hast, auch, wie wir zum
- 40:13Beispiel, ist es jetzt nichts, wo wir uns jetzt zum Beispiel
- 40:15auch gesagt haben, Boah, das verändert jetzt wirklich alles,
- 40:17das ist voll krass so, unsere ganze Coding Welt hat sich auf
- 40:21den Kopf gestellt, so ist es nicht.
- 40:23Aber es ist halt einfach so weißt du du kannst so Dinge
- 40:26mitnehmen du kannst für dich weil du du hast Dinge erlebt du
- 40:29merkst vielleicht ey warte mal da und da wenn ich das aus der
- 40:32Sichtweise noch mal betrachte hätte es vielleicht geholfen
- 40:35beim nächsten Mal probier ich das mal aus ne und das ist halt
- 40:37einfach gut und dafür ist es halt nicht verkehrt so ich sag
- 40:41mal seinen wissenshorizont zu erweitern und dann ist das ne
- 40:44tolle Sache und zu don't repeat yourself da muss ich immer an
- 40:47eine Sache denken wo mal NN ganz Alter Kollege von mir gesagt
- 40:51hat. Und dann hier Don't repeat
- 40:53yourself Bauerbub und ich so wie heißt das noch mal?
- 40:56Und er so, Na Don't repeat yourself und ich dachte mir so I
- 40:59got you, ich wusste das hast. Du übrigens in der Podcast Folge
- 41:02bei mir auch gemacht. Das ist einfach.
- 41:05Werd ich dir nie verzeihen, ja. Kein Problem, lass Ding und.
- 41:11Demnach hast du deinen Joke wiederholt.
- 41:13Oh mein Gott, das ist ja noch viel schlimmer, ey ja, wie sagt?
- 41:17Man so schön, wer unschuldig ist, wer für den ersten Stein
- 41:19oder so n Kram. Ja, man erzählt auch immer die
- 41:25gleichen Floskeln am Ende wieder, aber ich muss da mal
- 41:27dran denken. Auf jeden Fall, Tino hat Spaß
- 41:30gemacht, war eine tolle Folge, vielen Dank dafür.
- 41:32Ja, auch vielen Dank noch mal für den Themenvorschlag,
- 41:35definitiv deswegen auch hier die Anmerkung, Liebe zuhören, Liebe
- 41:37zuhören, falls du Themenvorschläge hast, weil du
- 41:39denkst, ey, das wäre echt cool, wenn ihr darüber mal sprecht
- 41:42oder es ein Thema ist, was vielleicht nicht so bekannt ist,
- 41:44aber unsere coder Welt davon erfahren muss, dann.
- 41:47Dann schreib uns gerne auf der Plattform deiner Wahl oder per
- 41:50Mail würden wir uns mega freuen und wir setzen es natürlich auch
- 41:54um die Wünsche. Ganz genau.
- 41:56Und ansonsten würd ich sagen, Leute, liebe Zuhörer, lieber
- 41:59Zuhörer, bewertet gerne den Podcast, falls ihr das noch
- 42:02nicht gemacht habt. Das hilft uns auf jeden Fall,
- 42:04gerade wenn du sagst, dieser Podcast ist bringt dir Mehrwert,
- 42:09dann freut uns das natürlich mega und du kannst auch gerne
- 42:12gibt es auch n kleinen Spendenlink in den Shownotes
- 42:15würden wir uns auch mega drüber freuen.
- 42:17Ansonsten würde ich sagen, hören wir uns einfach in der nächsten
- 42:20Folge wieder bis zum nächsten. Mal deine Kollegen Wallis
- 42:23gemeinsam besser.