Latest / Coding Buddies | Tech & Dev-Mindset / Clean Code #7 - Datenstrukturen oder Objekte?
Transcript
- 0:00Bedeutet, kann ich zwar, ich sag mal.
- 0:05Relativ schnell neue Funktionen hinzufügen, ne, also sowas wie
- 0:10Checkmops im Bereich ist, oder? Ja, jetzt fällt mir kein anderes
- 0:15Beispiel ein. Check mal, ob es nicht im
- 0:17Bereich ist. Ist jetzt blöd Coating Boys dein
- 0:20Podcast wohnt im Softwareentwicklung und
- 0:22aktueller Technews. Herzlich Willkommen.
- 0:36Herzlich Willkommen zur neuen Folge vom Coding Buddies
- 0:40Podcast. Die Gastgeber sind wieder am
- 0:42Start, das bin natürlich ich und Tino ist auch dabei und den
- 0:46heiße ich jetzt herzlich willkommen.
- 0:49Halli Hallo, das war ne schöne Einleitung, die hat mir gut
- 0:52gefallen. Ich hoffe dir liebe zuhören
- 0:54Liberty aber auch. Hi.
- 0:57Fabi Hi Tino, Grüße dich. Wie geht es?
- 1:01Wie steht es ja alles gut soweit, alles gut es.
- 1:04Ist alles. Im Lotto alles im Lot genau das
- 1:07ist genau die richtige Redewendung, die ich gesucht
- 1:09habe. Es ist alles im Lot mir.
- 1:12Geht's super, ich hab Bock sehr gut, ich freu mich aufs Thema
- 1:14heute, du hast es ja schon mal im kleinen Vorgespräch
- 1:17angeteasert. Wird cool heute, das wird
- 1:21spannend. Sagen wir es mal so, das ist für
- 1:22mich auch ein sehr spannendes Thema.
- 1:24Bevor wir aufs Thema kommen, wollte ich noch mal einmal ganz
- 1:26kurz im Vorfeld uns mich in unserem Namen bedanken.
- 1:32Bei allen Zuhörerinnen und Zuhörern, die uns so liebe Worte
- 1:37auch. Zukommen lassen.
- 1:40Und zwar liebe Worte zu unserem Podcast.
- 1:43Wir haben schon gerne mal das ein oder andere Lob in letzter
- 1:46Zeit bekommen und da wollte ich mich einfach nochmal in unserem
- 1:50Namen an allen. Wird jetzt zuhören und zuhören,
- 1:54bedanken. Das freut uns.
- 1:55Vielen Dank vielen, vielen Dank. Man kann es nicht sehen, aber
- 1:57ich versuch hier gerade hier so mit den Fingern so ein Herz zu
- 1:59machen. Weil Tino sieht zum.
- 2:01Beispiel die ja, kann ich gar nicht, geht gar nicht.
- 2:04Also Respekt an Leuten, die das so aus dem Stand so Zack Herz,
- 2:08kennst du das so so ein perfektes Herz mit den Fingern
- 2:11so aus dem Licht. Das ist Crazy.
- 2:13Und manchmal auch mit ganz komischen Konstellationen an
- 2:16Fingern. Irgendwie so mit einem
- 2:18Ringfinger und weiß ich, was da alles schon das ist wild
- 2:20manchmal. Da sind wir zu alt für.
- 2:24Nicht nur, weil wir auch uns fehlt die Gelenkigkeit in den
- 2:26Fingern. Ich wollte schon sagen, die
- 2:31Arthrose kickt da rein. Aber nein, nein, nein.
- 2:34Aber was mich zum Beispiel sehr berührt hat, war das jemand.
- 2:41In der Twitch Session in den Chat geschrieben hat.
- 2:44Da sind ja endlich die Gesichter zu meinem Lieblingspodcast und
- 2:47sowas ist natürlich. Der Hammer.
- 2:49Und total toll. Also nochmal vielen Dank dafür
- 2:52und genau. Jetzt würde ich sagen, starten
- 2:56wir ins Thema rein und das Thema ist dieses Mal ja n bisschen ja.
- 3:02Also es geht wieder um Cleancode.
- 3:04Und es geht um intensiveres Thema, eventuell also vielleicht
- 3:10auch so n bisschen für sag ich jetzt mal fortgeschrittenere,
- 3:14eventuell aber natürlich auch für eigentlich ist es für alle
- 3:17was, weil damit setzt man sich auf jeden Fall irgendwann
- 3:20auseinander, also. Nehme ich.
- 3:22Alles zurück sollte man auch. Und es geht eigentlich im
- 3:27Endeffekt. Das Thema geht darum,
- 3:29Datenstrukturen und Objekte, also das sind ja ich Spoiler,
- 3:32mal ein bisschen schon was unterschiedliches, und wir
- 3:36wollen jetzt in dieser Folge mal ein bisschen die Frage klären,
- 3:38was ist der Unterschied und wann nimmt man was von beidem.
- 3:44Ja, das ist auch ein sehr spannendes Thema.
- 3:49Als du das Thema vorgeschlagen hast, dachte ich mir so, ja,
- 3:51cool klingt cool, oh mein Gott, ja dann bin ich erstmal so
- 3:54selbst ins Struggeln gekommen, weil ich mir so dachte.
- 3:56Ja, okay ist doch ganz logisch, Datenstrukturen, Objekte, aber
- 4:00wenn man da mal tiefgründiger drüber nachdenkt und sich mal
- 4:04wirklich. Dieses Thema einlässt, muss ich
- 4:07sagen, ging es jedenfalls mir so, dass man da echt so n
- 4:10bisschen Probleme kriegt, das klar auseinander zu halten.
- 4:13Also wirklich sich mal zu überlegen, was definiert eine
- 4:18Datenstruktur, was ist ein Objekt in dem Sinne und wie,
- 4:24wann setzt man was ein und das ganze aber auf einer Metaebene,
- 4:28die jetzt sprachenunabhängig ist, das ist noch mal eine
- 4:31kleine Anmerkung dazu und die auch sehr wichtig ist.
- 4:34Wir reden jetzt nicht davon, dass wir jetzt sagen, okay, wir
- 4:37haben jetzt zum Beispiel in unserem Grundlagenkurs Java
- 4:39gehabt, und wie macht man das jetzt in Java oder die.
- 4:43Andere Sprachen grundlagenkurs Python, weil da geht es ja schon
- 4:45los. Das wäre in beiden Sprachen
- 4:47schon unterschiedlich und deswegen würde ich das Ganze
- 4:51gerne auf eine Art Metaebene heben, wo es auch hingehört,
- 4:54meiner Meinung nach, dass man sich ganz allgemein
- 4:58sprachenunabhängig überlegt, wie möchte ich meine Software oder
- 5:02mein System noch allgemeiner, nee sagen wir mal und meine
- 5:05Software die seien. Und verwende ich dann für
- 5:09gewisse Funktionalitäten, die ich brauche oder Features, die
- 5:13ich jetzt zum Beispiel umsetzen möchte?
- 5:15Da überleg ich mir n Plan, wie ich das Coden möchte und nehm
- 5:17ich jetzt beispielsweise Datenstrukturen oder setz ich
- 5:21das ganze lieber mit Objektorientiert um, zum
- 5:25Beispiel? Ja.
- 5:26Also auf diese Ebene würde ich das sehr gerne heben und.
- 5:30Deswegen auch anfangs mal mit dir diskutieren, worin da so die
- 5:35Unterschiede liegen können. Auch hinsichtlich.
- 5:39Es ist ja die cleancode Reihe immer natürlich hinsichtlich
- 5:43einer Clean Entwicklung, was so nach dem cleancode Lehrbuch.
- 5:50Quasi angedacht ist dabei, und dabei weiß nicht, möchtest du
- 5:54mal anfangen, zum Beispiel mal aus deiner Sicht zu erklären,
- 5:57was eine einfache Datenstruktur ist.
- 6:00Was versteht man unter einer Datenstruktur ja?
- 6:02Genau also wie du ja schon meintest.
- 6:04Also wenn wir jetzt noch mal ganz kurz auch nochmal.
- 6:09Java beispielsweise hat ja ausschließlich Klassenobjekte,
- 6:13wie auch immer, aber darum geht es jetzt nicht, sondern wirklich
- 6:16wie du schon meintest, noch mal ganz explizit.
- 6:18Metaebene. Also wenn du jetzt zum Beispiel
- 6:20eine Datenstruktur ist, im Endeffekt eine, sagen wir mal,
- 6:24eine Ansammlung von Daten. Die, wobei diese Daten die.
- 6:31In dieser Datenstruktur hängen sozusagen offen liegen, das
- 6:34heißt, du hast im Endeffekt keine Logik, also ne, die
- 6:38irgendwie sag ich jetzt mal. Daten irgendwie verarbeitet, die
- 6:43da drin sind, sondern wirklich du hast Daten in deiner
- 6:46Datenstruktur und kannst plain genau auf diese Daten zugreifen.
- 6:49Der Vorteil von dieser Datenstruktur ist, es hält
- 6:52natürlich semantisch Daten zusammen, die auch semantisch
- 6:55irgendwie zusammengehören. Ne, das ist halt erstmal
- 6:57wichtig. Also es bildet sozusagen
- 6:59Verbund. Sozusagen genau.
- 7:01Und wenn du jetzt, wenn du jetzt das ganze nimmst und sagst,
- 7:03okay, aber das klingt ja irgendwie eigentlich schon auch
- 7:06wie ein Objekt, es ist doch irgendwie das gleiche.
- 7:10Da muss man dann halt sagen, naja, okay vielleicht.
- 7:13Erstmal ist es ein Ansatz, aber der Hauptpunkt ist, dass so ein
- 7:18Objekt halt eben Daten hält, aber diese Daten sind mehr oder
- 7:24weniger versteckt, das heißt du kannst von außen auf diese
- 7:26Daten, auf diese Pläne. Datenpunkte nenne ich es jetzt
- 7:31einfach mal, die du irgendwie da drin hast, kannst du nicht
- 7:33zugreifen, sondern du kannst über Funktionen drauf zugreifen
- 7:38beziehungsweise du hast Funktionen die schon diese Daten
- 7:42halt auch eben vielleicht semantisch verarbeiten.
- 7:45Ne. Das ist so n bisschen.
- 7:50Der Hauptunterschied und jetzt kann man sich vielleicht
- 7:53hinstellen und sagen, OK, klingt ja alles ziemlich vage, lass uns
- 7:58doch vielleicht einfach mal n paar Beispiele nehmen und sagen
- 8:01okay, was ist jetzt wirklich mal konkret ein Beispiel für eine
- 8:03Datenstruktur und was wäre denn zum Beispiel mal ein konkretes
- 8:07Beispiel für ein Objekt? Ja.
- 8:12Ja, das ist eine gute Idee. Am Beispiel kann man sowas denn
- 8:14wahrscheinlich auch besser verstehen.
- 8:17Nehmen wir, fangen wir mit Datenstrukturen an.
- 8:21Angenommen, ich möchte jetzt die Daten einer Entität abbilden.
- 8:27Beispielsweise einer Person, finde ich.
- 8:29Ist ein ganz gutes Beispiel, also wirklich eine ganz einfache
- 8:32Repräsentation einer Person. Hinsichtlich zum Beispiel als
- 8:38User in auf irgendeiner Website, wo man sich anmelden kann.
- 8:44Mal so als Beispiel. Und ja, was was hat denn so n
- 8:49User? Du hast n Name eventuell Vorname
- 8:52Nachname, du hast n vielleicht n Alter noch ne E-Mail-Adresse,
- 8:56das wären so klassische Daten. Die halt in dieser Datenstruktur
- 9:02gehalten werden und die dann quasi verwendet werden können.
- 9:05Das heißt, die liegen offen, da man weiß genau zum Beispiel.
- 9:10Das Alter ist ein integer, weil es gibt keinen.
- 9:13Ich bin Achtzehneinhalb in dem Sinne, sondern es wird mit
- 9:17ganzen Zahlen gearbeitet. Die E-Mail wird ein String sein,
- 9:22beispielsweise und so weiter das heißt, ich weiß ganz genau, wie
- 9:24die Daten aussehen und kann mit dieser Datenstruktur arbeiten.
- 9:30Ein anderes vielleicht eher für die Mathematik Fans unter uns.
- 9:33Ein ganz klassisches Beispiel wären geometrische Form oder
- 9:39noch besser zum Beispiel ein Punkt im Koordinatensystem, dass
- 9:42ich sage okay dieser Punkt hat eine x und y Koordinate und
- 9:46bildet da oder repräsentiert damit einen Punkt im
- 9:50zweidimensionalen Koordinatensystem.
- 9:52Ja, das Beispiel. Finde ich richtig gut.
- 9:54Also dann habe ich beispielsweise 2 Zahlenwerte da
- 9:57drin und es ist ganz klar was. X ist und was Y ist, dann würde
- 10:02ich zum Beispiel auch sehen können, sind es ganz zahlen, ist
- 10:05es integer zum Beispiel oder sind es eher Gleitkommazahlen,
- 10:09die x und y Koordinaten? Also das ist quasi klar
- 10:12ersichtlich und ich kann damit arbeiten.
- 10:14Diese Repräsentation ist offengelegt, wie du so schön
- 10:17gesagt hast, weil das ist ein wichtiger Punkt dabei.
- 10:21Objekte. Sind also der Anwendungsfall
- 10:26davon. Ist ja wie du so schön gesagt
- 10:28hast, wenn man auf diesen Objekten arbeitet, das heißt
- 10:31diese interne Datenrepräsentation ist
- 10:34versteckt und nicht nach außen getragen, das heißt, ich weiß
- 10:38zum Beispiel nicht, welche Datentypen für diese einzelnen
- 10:41Attribute verwendet werden, das interessiert mich aber auch
- 10:44nicht, weil ich kriege Funktion bereitgestellt, mit denen ich
- 10:48auf diesen Werten arbeiten kann und da finde ich, ist so ein
- 10:51klassisches Beispiel, was man auch oft in Lehrbüchern sieht,
- 10:55ist zum Beispiel ein Bankkonto. Weil, daran kann man das
- 10:59eigentlich ganz gut verstehen. Ich lege mir ein Bankkonto an,
- 11:03das heißt, ich erzeuge sozusagen ein Objekt und sag okay ich habe
- 11:06eine Kontonummer und ein initialen Kontostand 0 oder
- 11:10keine Ahnung, ich stelle das Konto direkt mit einer
- 11:13Einzahlung kann man sagen okay, dann hat es halt einen gewissen
- 11:16wert x. So, und die Daten, die da drin
- 11:19gehalten werden, ist dann zum Beispiel die Kontonummer und der
- 11:21Kontostand. Mhm, und jetzt hast du.
- 11:25Allerdings der Unterschied genau.
- 11:27Na gut, dann los. Ich hab grad n bisschen noch
- 11:31darüber nachgedacht, weil du das gesagt hast, dass man zum
- 11:34Beispiel nicht unbedingt auf die, auch nicht auf die
- 11:37Datenstruktur oder Repräsentation von zum Beispiel
- 11:40dem Kontostand eigentlich, darüber weiß man nichts.
- 11:42Das heißt, wenn du aber so eine Art Funktion hast, die dir sagt,
- 11:45Get Balance, das heißt, du möchtest irgendwie diesen Wert
- 11:48der Balance bekommen, dann könnte es ja durchaus sein, dass
- 11:51zum Beispiel die Balance in, sag ich mal in Cent dargestellt ist,
- 11:56mal als Beispiel, und du aber als sozusagen über diese Get
- 12:00Balance Funktion am Ende ein. Sag ich mal einen Euro wert.
- 12:04Bekommst also zum Beispiel keine Ahnung.
- 12:06Sagen wir mal 2500,35€ oder so, dass du dann wirklich quasi
- 12:12vielleicht einfach eine Gleitkommazahl bekommst.
- 12:15Aber eigentlich ist die interne Datenrepräsentation unter
- 12:17Umständen. Sagen wir mal integer in Sense
- 12:20oder so ne mal als Beispiel. Ja, und das ist nämlich n gutes
- 12:23Beispiel, weil von außen gesehen interessiert dich ja nicht, wie
- 12:27intern die Daten gehalten werden, sondern für dich zählt
- 12:30nur das Gate Balance dir n ne gleitkommazahl zurückgibt.
- 12:34Und sagt, du kriegst jetzt n Euro wert sozusagen, also dann
- 12:38halt die. Was hast du gesagt
- 12:40zweitausendfünfhundert Komma ja ich hab sorry 3335 natürlich 35.
- 12:48Genau das ist nämlich der entscheidende Unterschied, dass
- 12:50du halt eine Logik in diesem Objekt hast, mit der auf diesen
- 12:55Daten gearbeitet wird, weil es macht ja keinen Sinn zu sagen,
- 12:58ich hab jetzt ne Datenstruktur, das ist ne ne ne Kontonummer und
- 13:01ne Balance und da könnt ihr jetzt drauf zugreifen und wenn
- 13:04du sagst beispielsweise du zahlst was ein, dann änder bitte
- 13:08die Balancebetrag, weil der ist ja sozusagen öffentlich, dann
- 13:12musst du den jetzt selbst da ändern.
- 13:15Die Kontonummer Ach weißt du was?
- 13:16Wenn du möchtest, kannst du auf die Kontonummer ändern, das
- 13:18Macht natürlich keinen Sinn unter diesem Anwendungsfall, so
- 13:21dass es sinnvoller ist zu sagen okay, ich gehe diesen Objekte
- 13:24weg und habe zum Beispiel eine Einzahlungsmethode oder eine
- 13:28Abhebung Methode, womit ich meinen Kontostand dann intern
- 13:32manipuliere und die Kontonummer ändern macht sowieso keinen Sinn
- 13:36in dem Sinne, also da würde ich sowieso dann wahrscheinlich wer
- 13:40weiß wo es später mal geht in unserem kleinen Beispiel gar
- 13:43nicht halt irgendwie sagen, dass man die ändern kann.
- 13:46Das ist halt genau der Unterschied.
- 13:48Und. Ja, doch, das sind eigentlich
- 13:52gute Beispiele. Ich würd da oder hast du noch
- 13:55noch 1? Nee, ich find das gut, also da,
- 13:57da kann man sich ja eigentlich schon n bisschen was drunter
- 13:59vorstellen, dass man das auch noch mal n bisschen
- 14:02differenziert, was also was beides eigentlich ist, was damit
- 14:05gemeint ist. Und die Frage ist natürlich
- 14:09jetzt okay es gibt diese beiden. Es gibt jetzt Datenstrukturen,
- 14:12es gibt Objekte, dann kann man sich natürlich sagen okay, ich
- 14:15hab den Unterschied verstanden, es gibt beide Sachen, das eine
- 14:19ist das, das andere ist, das haben wir gerade noch mal ein
- 14:23bisschen dargelegt, und dann ist natürlich die nächste Frage,
- 14:26jedenfalls würde sie mir aufkommen, wenn ich jetzt da
- 14:28noch nicht ganz involviert bin, so okay wann nimmt man denn
- 14:30eigentlich was? Und man kann ja jetzt erst mal
- 14:34vorweggreifen, dass natürlich erst mal natürlich abhängig von
- 14:38der Programmiersprache ist, weil es gibt ja zum Beispiel
- 14:40Programmiersprachen, die gar nicht objektorientiert arbeiten,
- 14:43mal als Beispiel, also witzigerweise, letztens erst
- 14:47gelernt, go ist wohl wurde. Uns ja gesagt, nicht
- 14:51objektorientiert. Wusste ich gar nicht.
- 14:55Ich bin nicht so n Jo Cocoder. Weiß ich nicht.
- 14:58Unsere Sprache tatsächlich. Ja, fand ich.
- 15:00Aber spannend, dass es so ist. Aber mal angenommen ne, wenn man
- 15:04jetzt davon ausgeht, es gibt. Bist jetzt in der in der
- 15:08Möglichkeit zu sagen, ob jetzt sozusagen objektorientierung in
- 15:12der Sprache möglich ist oder nicht.
- 15:14Sagen wir mal beides geht ne, dann wäre ja die Frage, wann
- 15:17nimmt man was. Ja.
- 15:22Eine sehr gute Frage. Und da liegt auch die
- 15:25Schwierigkeit drin und deswegen die Anmerkung auch nochmal an
- 15:29mich selbst, weil das ist mir jetzt im Zuge der Folge wird mir
- 15:33das auch immer klarer, dass man sich da wirklich hinsetzen
- 15:36sollte und sich das gedanklich mal durchspielen sollte, um da
- 15:40einfach eine gute Entscheidung zu treffen.
- 15:43Weil. Man ja so instinktiv.
- 15:47Ich weiß nicht, wie es dir geht, aber über die Jahre, die man
- 15:51entwickelt, fängt man halt an. Du hast ne Problemstellung, du
- 15:55fängst an Loszukurden und irgendwie so instinktiv
- 15:58entscheidest du. Ja, das mache ich jetzt hier als
- 16:01Datenstruktur. Oh nee, hier werde ich mir mal
- 16:04ne klasse schreiben, womit ich denn Objekte erzeugen kann, weil
- 16:07ich brauch da noch Logik mit drin und so weiter aber sich
- 16:11gezielt Gedanken vorher zu machen ist das gerade der
- 16:13richtige Weg oder ist das nur meine persönliche Practice, weil
- 16:17ich das oft so mache? Das finde ich eigentlich ganz
- 16:19spannend. Wie siehst du das?
- 16:22Also ich habe auch auf jeden Fall schon.
- 16:26Öfter jetzt. Dieses also bin ich oder nicht
- 16:28öfter, ich bin da auch öfter mal doch schon öfter auch in der
- 16:31Vergangenheit, sagen wir mal so, an den Punkt gekommen, wo ich
- 16:34erstmal dachte okay, ich erstelle mir jetzt eine
- 16:37Datenstruktur, so wie wir es gerade besprochen haben und bin
- 16:40dann irgendwann an den Punkt gekommen, dass ich mir dachte,
- 16:42okay, irgendwie bräuchte ich jetzt zum Beispiel eine
- 16:46Funktion, die mir innerhalb dieser Datenstruktur bestimmt,
- 16:49ob sie, weiß ich nicht zum Beispiel.
- 16:54Gib mir mal ein Beispiel, aber die etwas Bestimmtes
- 16:58herauskristallisiert. Wenn du zum Beispiel sagst.
- 17:01Du hast vielleicht NNNN Punkt ne, wenn wir wir waren jetzt
- 17:05beim Punkt und du willst jetzt überlegen OK ist dieser.in einem
- 17:08bestimmten Bereich ne so keine Ahnung sagen wir mal in dem
- 17:11grünen Bereich oder einem roten Bereich ne also jetzt im Sinne
- 17:13von ist OK der Bereich oder nicht.
- 17:16Dann fängst du das an und sagst OK, ich hab n Punkt, ich hab ne
- 17:18Datenstruktur, die erstelle ich mir und jetzt komm ich dazu,
- 17:21dass ich sage von außen ich hab jetzt diese Koordinaten und
- 17:24überprüfe von außen. Ist dieser Punkt im Grünen oder
- 17:29im roten Bereich? Ne, also in einem erlaubten
- 17:32Bereich oder nicht so? Und dann ist ja die Frage, wenn
- 17:35du das einmal machst, okay ist nicht so schlimm, lass es als
- 17:37Datenstruktur da, jetzt kommst du aber irgendwann an den Punkt
- 17:40wo du dir denkst, es muss sich an der Stelle im Code machen, an
- 17:43der zweiten, an der Dritten, an der vierten oder fünften Stelle
- 17:44im Code. Jetzt habe ich eine Menge Code
- 17:47duplikationen wieso nehme ich mir nicht einfach genau diese
- 17:49Funktion, pack sie in ich sag mal die Datenstruktur Beziehung
- 17:52beziehungsweise Wandel diese Datenstruktur in eine in ein
- 17:55Objekt um, weil dann könnte dieses Objekt nämlich einfach
- 17:58eine Funktion haben. Sozusagen, sagt Okay du willst
- 18:01mit diesem Punkt an eine Stelle gehen, aber kann ich das
- 18:05überhaupt? Und deswegen hast du eine
- 18:06Funktion, die du aufrufst und sagst, Disposition valid oder so
- 18:10weißt. Du.
- 18:11Und da ist dann natürlich offensichtlich die Überlegung im
- 18:15Vorfeld nicht gut genug gewesen, weil das hätte man schon kommen
- 18:18sehen können, weißte und solche ähnliche Situationen hatte ich
- 18:21schon öfter mal gehabt, deswegen ist es gut, wie du meintest,
- 18:25wirklich im Vorfeld darüber nachzudenken und um deine Frage
- 18:27zu beantworten, hatte ich auf jeden Fall schon, dass man sich
- 18:30denkt okay, ich mache das einfach manchmal so einfach.
- 18:34Weil ich es immer so gemacht habe, aber eigentlich nicht
- 18:36wirklich darüber nachgedacht habe.
- 18:38Was brauche ich jetzt eigentlich wirklich oder was ist
- 18:40perspektivisch ne auch wirklich sinnvoll?
- 18:44Also es ist ja auch nicht fatal zu sagen, OK, ich refecte das
- 18:47noch mal. Das gehört zur
- 18:48Softwareentwicklung einfach dazu.
- 18:49Da haben wir schon oft drüber gesprochen.
- 18:52Aber das ist ein gutes Beispiel. Ich kann ja auch genau das
- 18:54Gegenbeispiel bringen, wo ich dachte, ich brauche unbedingt
- 18:57ein Objekt. Es reicht keine einfache
- 19:01Datenstruktur aus. Bin aber zudem ich weiß nicht
- 19:05mehr genau was es war. Also ich kann jetzt kein exaktes
- 19:07Beispiel geben, aber am Ende war es so, dass ich im Prinzip.
- 19:12Diese klassischen Getter und Setter hatte für die Attribute
- 19:16innerhalb der Klasse, also für die Zuhörer und Zuhörer, die
- 19:20jetzt nicht wissen, was ich damit meine.
- 19:22Im Prinzip habe ich Funktion geschrieben, dass man die Werte
- 19:25auslesen kann, also nach außen zur Verfügung stellt und setter,
- 19:29dass man sie auch von außen verändern kann und dann kommt
- 19:33man genau an den Punkt, dass man sich denkt okay, ich habe jetzt
- 19:36ein Objekt, die intern Daten möchten.
- 19:39Nicht zur Verfügung stellen. Aber ich habe Getter und netter
- 19:45hat in der Regel ja denn n Rückgabewert mit Datentyp, das
- 19:49heißt von außen. Stell ich ja doch sichtbar klar,
- 19:53wie die interne Datenrepräsentation aussieht und
- 19:56ich hab sogar noch setter, dass ich sie auch verändern kann und
- 19:59dann bist du ganz klar an dem Punkt, dass man sagen kann, OK,
- 20:02mach ne Datenstruktur, weil was bringt dir denn jetzt dieses
- 20:04Objekt im Endeffekt meine Proxy? Funktion oder also?
- 20:09Das ist so ne, das ist ne. Genau das ist so ne pseudo
- 20:12abstrakte Abstraktion sage ich mal ne, also dass du sag ich mal
- 20:17so ne so ne so einen abstrakten Grad einbaust, der aber
- 20:20überhaupt nicht abstrakt ist, weil am Ende.
- 20:23Kannst du komplett sehen, was darunter liegt und das ist halt
- 20:27so das Gegenbeispiel, dass man sich denkt okay Objekt, warum
- 20:29wolltest du jetzt unbedingt ein Objekt nehmen, das ist
- 20:31eigentlich eine ganz klare Datenstruktur in deiner Software
- 20:34gerade. Ja, das stimmt.
- 20:38Ist ein gutes Beispiel auf jeden Fall und ich kenne das auch.
- 20:42Das ist auch gerade so. Ich hatte auch zum Beispiel
- 20:44schon mal so Momente, wo du genau solche Objekte hattest,
- 20:48wie du meintest. Dann hast du eigentlich im
- 20:50Endeffekt nur Getter und Setter. Und dann hatte ich sogar noch
- 20:53den den Punkt, dass ich eigentlich NNN Objekt irgendwie
- 20:56übertragen musste. Über n Interface ne, also wenn
- 20:59du es dir vorstellen möchtest, zum Beispiel Front and back end
- 21:02Kommunikation über Rest ne. Ja.
- 21:05Also zwischen 2 Systemen meiner allgemeinen.
- 21:07Kommunikation zwischen 2 Systemen dann wurde dann Objekt
- 21:10übertragen und im Endeffekt hast du oder hatte ich dann den den
- 21:14Fall, dass ich quasi so n Objekt hatte, aber so n Objekt ist es
- 21:17immer n bisschen. Komplizierter unter Umständen
- 21:20sowas zu übertragen, oder? Eigentlich willst du halt nur
- 21:21ganz plane Datenstrukturen übertragen über solche Interface
- 21:24ne. Du willst ja auch nicht.
- 21:25Funktionen drin haben oder sonst was.
- 21:27So, und da gibt es zum Beispiel auch sogenannte DTOS, ne Data.
- 21:32Du hast es in deinem Satz ja schon verwendet, das Wort
- 21:35Datenstruktur, weil das n ganz klares Beispiel ist für verwende
- 21:38Datenstrukturen. Genau die t os das Stichwort
- 21:41sorry ich wollte dich nicht unterbrechen.
- 21:43Und im Endeffekt habe ich dann quasi dieses Objekt in dieses
- 21:47Dto umgewandelt, um es dann sozusagen zu übertragen.
- 21:49Und dann dachte ich mir auch, so, was ist hier eigentlich los?
- 21:54Also macht an manchen Stellen natürlich Sinn, wenn du wirklich
- 21:57ein Objekt brauchst und willst dann gewisse Daten davon
- 22:00übertragen, dass du dir denn dafür ein Dto anlegst, weil wie
- 22:04gesagt, das ist ja ein Best Practice, diese dt.
- 22:08Os zu verwenden, weil du einfach eine definierte Schnittstelle
- 22:11denn hast zwischen den Systemen. Das heißt du weißt genau, was du
- 22:14senden sollst und das andere System weiß genau, was zu
- 22:16empfangen ist. Und diese dt.
- 22:18Os, die du so sagst sind halt sehr flache Datenstrukturen.
- 22:22Wirklich nur Daten und das ist halt komplett ersichtlich was da
- 22:26gesendet wird. Genau also.
- 22:28Von der Repräsentation her gemeint, jetzt ja find ich cool.
- 22:32DTOS sind ein fantastisches Beispiel für Datenstrukturen.
- 22:37Auf jeden Fall. Genau, aber jetzt lass uns noch
- 22:39mal vielleicht n bisschen gucken, dass wir sagen, OK, wann
- 22:41ist denn zum Beispiel was wirklich sinnvoll?
- 22:44Ne, also man kann sich ja hinstellen und sagen, ja gut, du
- 22:47hast vielleicht manchmal Datenstrukturen, du brauchst
- 22:49vielleicht. Objekte aber was ist denn jetzt
- 22:54zum Beispiel, also wie stehen die zum Beispiel so im Gegensatz
- 22:58zueinander und wieso sollte man zum Beispiel das eine so
- 23:00verwenden und das andere so weißt du was ich meine?
- 23:03Ja oder brauchst du? Input für diese Frage.
- 23:05Vielleicht waren sie sehr allgemein.
- 23:07Ich muss aber wirklich mal kurz drüber nachdenken.
- 23:09Also was einem oft begegnet ist. So diese also, dass es oft so
- 23:14antisemitisch genannt wird, was auch?
- 23:17Sinn macht also ich find das ist n bisschen schwierig zu greifen,
- 23:20aber es macht am Ende wirklich Sinn, dass du sagst, eigentlich,
- 23:23wenn man das mal ganz nüchtern betrachtet, sind sie komplett
- 23:26gegensätzlich. Haben wir ja auch schon gesagt.
- 23:30Datenstrukturen haben ne Offenlegung der internen Daten
- 23:34und keine Funktionalität, sind halt reine Datenrepräsentation,
- 23:38ein Objekt hingegen legt nicht die Daten offen, bietet aber
- 23:42Funktionalitäten an, also es besitzt zum Beispiel eine
- 23:44gewisse Businesslogik, wie du mit diesen Daten arbeiten
- 23:47kannst. Das ist ja schon mal komplett
- 23:50gegensätzlich. Die Frage ist, wie das jetzt
- 23:55sich auf so eine gesamte Software auswirken kann, weil
- 23:58das ist ja auch ein entscheidender Punkt.
- 24:02Sage ich mal. Zu entscheiden, was brauche ich
- 24:05jetzt oder was verwende ich, wenn man sich das bei Objekten
- 24:09zum Beispiel anguckt, dann sind die natürlich hinsichtlich der
- 24:13Implementierung in der gesamten Software ziemlich robust.
- 24:17Das heißt, sie bilden eine Art Gekapselte Einheit.
- 24:22Wobei der restlichen Software dann egal ist, wie die interne
- 24:27Implementierung aussieht. Es gibt halt den funktioniert.
- 24:29Wenn die bereitgestellt werden, und diese sind entscheidend, was
- 24:33diese Funktion machen und die restliche Software arbeitet auf
- 24:35diesen Funktionen. Das heißt du hast halt ne ne
- 24:39sehr lose kapselung, also du hast keine hohen Abhängigkeiten
- 24:42dazwischen im Best Case. Das ist natürlich.
- 24:47Nen Vorteil bedeutet aber wiederum, dass du halt auch
- 24:51nicht genau das definieren musst, wie zum Beispiel diese
- 24:53Funktion aussieht. Das ist dann wieder.
- 24:56Die die Schwierigkeit dabei, du musst halt genau sagen, OK pass
- 24:59auf, der Rest der Welt ist egal wie meine interne Verwaltung der
- 25:04Daten aussieht, aber ich gewährleiste euch, dass die
- 25:07Funktion XY euch Werte in diesen.
- 25:11Datentyp in dieser Formatierung gibt zum Beispiel das Bankkonto
- 25:15noch mal, dass sie in Euro wert als Gleitkommazahl kriegt und
- 25:18nicht auf einmal Cent Beträge und die das restliche System
- 25:22denkt sich verdammt. Wir sind reich.
- 25:25Nein. Aber weißt du also, das ist halt
- 25:26wichtig an der Stelle, aber ansonsten kannst du intern dann
- 25:30machen, was du willst. Ist halt n Vorteil bei den
- 25:33Objekten. Ja, aber wie siehst du das?
- 25:36Ja, aber was ist denn jetzt zum Beispiel?
- 25:38Ich fand, ich fand ja dieses dieses eine Beispiel, wo wir
- 25:41auch drüber gesprochen hatten mit diesem sag ich mal mit
- 25:44Formen und dem Flächeninhalt, du hast ja zum Beispiel irgendwie
- 25:46ein Quadraten, Rechtecken, Dreiecken, Kreis, hast ja
- 25:50unterschiedliche Berechnungsformeln dafür und du
- 25:52kannst natürlich sagen okay, ich hab weiß ich nicht.
- 25:55Länge ne Höhe oder Volumen Flächen was auch immer ne was du
- 25:58da nehmen möchtest. Du kannst ja wie ich ja auch zum
- 26:01Beispiel schon mit diesem Punktbeispiel meinte ne wenn man
- 26:04das ist ja im Endeffekt alles das gleiche in Grün.
- 26:09Du kannst von außen bestimmte Sachen berechnen und checken, ob
- 26:12irgendwie was. Irgendwie funktioniert also du
- 26:16kannst ja bei dem bei den Punkten kannst du sagen, bin ich
- 26:18im richtigen Bereich, du hast nur die Koordinaten und kannst
- 26:21das von außen sozusagen checken, das heißt du nimmst dir deine
- 26:24Datenstruktur und arbeitest mit den Werten und Berechnest daraus
- 26:28sozusagen irgendwas, was du dann mit dem du weiter arbeitest.
- 26:31Genauso kannst du ja. Bei einem Rechteck sagen oder
- 26:34bei einem Quadrat oder was auch immer okay ich habe meine
- 26:36bestimmten Attribute, zum Beispiel ich habe Länge, Breite
- 26:39oder radius, wenn es ein Kreis ist.
- 26:41Und damit kann ich halt eben mit diesen Attributen außerhalb
- 26:45bestimmte. Berechnungen anstellen, was auch
- 26:50immer. Du kannst natürlich auch sagen
- 26:52okay warte mal. Ich habe jetzt aber 5
- 26:54verschiedene, also 5 verschiedene Formen und möchte
- 26:57aber für jede Form irgendwie. Sag ich jetzt mal nen dieses
- 27:03diese Fläche berechnen ne dann könnte man ja sagen OK lass uns
- 27:07doch da vielleicht n Objekt draus machen ne um zu sagen ja
- 27:11ich hab ein Objekt x und gib mir mal von Objekt x das Volumen die
- 27:16Fläche fragt mich nicht so. Da ist natürlich die.
- 27:20Frage OK, was macht Sinn oder beziehungsweise.
- 27:26Warum macht? Irgendwas mehr Sinn als das
- 27:28andere weißt du, weil du könntest dich natürlich
- 27:30hinstellen und sagen, Na gut, OK, ne, was, was ist denn wenn
- 27:33du jetzt sagst ich möchte jetzt ne neue Form hinzufügen, ne was
- 27:38bietet sich dann zum Beispiel an an der Stelle?
- 27:41Ja. Also um dieses geometrische
- 27:44Beispiel mal aufzugreifen, wenn du sagst, OK, wir haben einfach,
- 27:47wir wollen einfach verschiedene geometrische Formen abbilden,
- 27:50dann bist du ganz klar auf der Datenstrukturseite, weil wie
- 27:53gesagt, das sind einfach Daten. Punkt hat XY.
- 27:57Ein Quadrat hat halt ja einen Punkt und dann eine Seitenlänge,
- 28:01das reicht ja schon aus, um das Quadrat aufzuspannen und so
- 28:04weiter das heißt du kannst dann über Datenstrukturen deine
- 28:07geometrische Form abbilden. Wenn du jetzt aber dein Beispiel
- 28:11was du meintest, wo du dann gemerkt hast, Hey Moment mal,
- 28:13mit dieser Datenstruktur komme ich nicht weiter, das ist ja
- 28:15wirklich ein gutes Beispiel gewesen, an dem Punkt kommst,
- 28:18dass du sagst, Hey, ich möchte jetzt aber für sämtliche
- 28:21geometrische Formen. Berechnen, ob Sie innerhalb
- 28:26eines Bereiches im Koordinatensystem liegen.
- 28:28Dann kannst du natürlich sagen, ich schreib jetzt sonder von
- 28:31außen so ne Check Funktion und prüfe bist du n Punkt.
- 28:35Wenn ja dann muss XY drin sein bist du n Quadrat da muss ich
- 28:39gucken ob dein Startpunkt drin ist und die Seitenlängen nicht
- 28:43herausragend aus diesem Bereich also das heißt da merkst du ja
- 28:47schon ich habe jetzt verschiedene Implementierungen
- 28:49für diesen Check um sagen zu können ja du bist im Bereich
- 28:53oder nicht und. Da wird es dann, sag ich mal
- 28:55schon tricky, dass man sich sagen kann, Moment mal,
- 29:00vielleicht machen wir jetzt hier Objekte draus und.
- 29:06Geben diesen geometrischen Formen Funktion, die das
- 29:10übernehmen, weil dann kannst du ja sagen, jede geometrische Form
- 29:15implementiert selbst diesen Check für sich, passend zu der
- 29:18internen Datenrepräsentation. Das das ist halt so der Punkt
- 29:23denn dabei. Weil wenn ich das nicht mache
- 29:27bedeutet, kann ich zwar, ich sag mal.
- 29:32Relativ. Schnell neue Funktionen
- 29:34hinzufügen, ne, also sowas wie Checkmops im Bereich ist, oder?
- 29:41Ja, jetzt fällt mir kein anderes Beispiel ein.
- 29:43Check mal, ob es nicht im Bereich ist.
- 29:44Ist jetzt blöd. Ob zum Beispiel ne gewisse der
- 29:50Flächeninhalt, nehmen wir doch mal den Flächeninhalt so ne,
- 29:53dass du sagst OK oder berechne mal den Flächeninhalt, dann kann
- 29:56ich natürlich schnell diese Funktion, wenn ich jetzt auf
- 29:58Datenstrukturen arbeite hinzufügen und sagen okay pass
- 30:03auf, ich mache jetzt eine Funktion Flächeninhalt beim
- 30:07Punkt okay geschenkt, beim Quadrat berechne ich das, beim
- 30:10Dreieck berechne ich das mit den entsprechenden Formeln ok, aber
- 30:15wenn sich die Datenstruktur ändern.
- 30:18Wird tricky, weil. Du dann sämtliche Funktionen
- 30:20anrühren musst. Ja genau das ist.
- 30:22Ja, im Endeffekt genau dieser Trade off.
- 30:26Weil andersrum, und das ist wieder das ist dieses
- 30:29asymmetrische dabei, wenn ich es mit Objekten mache, hat jedes
- 30:34Objekt ja für sich selbst die Implementierung vom
- 30:36Flächeninhalt und dann tangiert es zum Beispiel den Kreis nicht,
- 30:40wenn sich am Rechteck was ändert.
- 30:42Ja, ja, ist. Auf jeden Fall noch mal gut, es
- 30:46war jetzt n. Bisschen mathematisch.
- 30:48Ich hoffe man konnt das verstehen, aber das ist im
- 30:50Prinzip ja auch genau der Trade, auf den du hast, ja.
- 30:54Genau das sind. Halt genau die Punkte, wo man
- 30:56natürlich wie du meintest. Man kann.
- 30:58Im Nachfolgenden kann man immer noch refect, dann ist ja kein
- 31:01Problem, nur wenn man im Vorfeld schon merkt oder bestimmte sag
- 31:06ich mal Anwendungsmöglichkeiten oder erahnt, dann sollte man
- 31:12dann hat man halt auch theoretisch einfach schon die
- 31:14Möglichkeit von Grund auf schon mal in die richtige Richtung zu
- 31:19entwickeln oder in die sagen wir mal in die passende Richtung für
- 31:22das entsprechende. Entsprechende Anwendungsfall.
- 31:26Ich finde man kann da ja auch. So ein bisschen eine kleine
- 31:30Faustformel, wie man so schön sagt.
- 31:33Ansetzen oder verwenden? Wenn ich mir überlege, was
- 31:40möchte ich abbilden? Und merke, dass.
- 31:44Das Verhalten im Vordergrund steht also schon.
- 31:48Ich weiß eigentlich schon, es geht eigentlich um die
- 31:50Funktionalität dahinter. Ja.
- 31:53Und. Diese Funktionalität kann sich
- 31:54auch zum Beispiel häufig ändern, sich weiterentwickeln, dass ich
- 31:58dann eher auf objektseite bin, dass ich das halt wirklich für
- 32:01mich Kapsel und mit festen Schnittstellen arbeite und der
- 32:06Außenwelt ist dann egal, wie diese Datenrepräsentation da
- 32:09drin außen sieht, drin aussieht, man hat dann einfach quasi feste
- 32:13Schnittstellen. Du hast zum Beispiel jetzt
- 32:15wieder das den. Bank Account, wo du nicht weißt,
- 32:17ob du nächstes Jahr die gleichen Zinsen hast wie dieses Jahr.
- 32:20Und das kannst du halt super in dieses Objekt reinkapseln und.
- 32:25Von außen wollen trotzdem. Die Leute weiter einzahlen und
- 32:28Geld abheben. Exakt.
- 32:32Und bei Datenstrukturen kann man sagen, OK, wenn ich zum Beispiel
- 32:36auf gleichen Daten, also wenn diese Datenrepräsentation sich
- 32:39nicht ändert, ich aber viele Operationen darauf ausführen
- 32:42möchte, dass dann halt die also. Für diese Datenrepräsentation
- 32:47eine Datenstruktur wohl die bessere Wahl ist, weil jetzt
- 32:50halt keine eigene Logik dahinter gibt, sondern man einfach nur
- 32:53mit diesen Daten arbeitet. Ja deswegen.
- 32:56Zum Beispiel bei Schnittstellen zwischen System die tos, weil es
- 33:00wird immer dieser Austausch sein und wenn da eine Anpassung
- 33:04gemacht wird, dann geht das Halt relativ.
- 33:07Simpel an der Stelle. Klar kann sich das ein bisschen
- 33:10durchs System, das ist dann wieder Designsache am Ende, aber
- 33:13ich weiß, ich hab ne Datenstruktur, die wird
- 33:15übertragen und da sind folgende Daten drin und die Gegenseite
- 33:17empfängt die ja. Ja, find ich gut.
- 33:22Das merken wir also jetzt. Funktion ja, dann Datenstruktur.
- 33:28Nee. Und so weiter.
- 33:33Aber pass auf. Folgender Vorschlag, Das hatten
- 33:36wir ja so am Anfang n bisschen bequatscht und damit würd ich
- 33:39gern die Folge beenden. Lass uns doch n ganz kleines
- 33:43Quiz machen. Für alle Zuhörerinnen und
- 33:46Zuhörer. Das so als Lernkontrolle klingt
- 33:50übertrieben, aber es ist halt mal spannend, wie jeder für sich
- 33:52entscheiden würde und vor allem, falls ihr euch gleich anders
- 33:56entscheidet als der jeweilige, der die Frage gestellt bekommen
- 34:00hat, dann lasst uns das gerne per Mail oder auf den
- 34:03Plattformen zukommen, weil das würde uns gerne interessieren,
- 34:05weil das ist natürlich diskussionspotenzial hoch 10
- 34:08jetzt. Wir stellen uns jetzt
- 34:11gegenseitig. Mal so ein 2 Fragen und dann
- 34:13gucken wir mal und. Ihr könnt auf jeden Fall auch
- 34:17mitraten. Okay hast du hast.
- 34:22Du hast du denn eine Frage? Ich habe eine ich.
- 34:25Habe mir schon was überlegt und zwar wenn du dir jetzt sagst
- 34:29okay pass auf, du entwickelst jetzt irgendwie eine Anwendung.
- 34:33Sagen wir mal auf einer ganz hohen Metaebene im Uni Bereich
- 34:38und Du möchtest zum Beispiel Daten von Studenten speichern
- 34:41oder Studentinnen beides. Mhm.
- 34:46Was? Würdest du für ne Datenstruktur
- 34:49an dieser Stelle nehmen? Ne?
- 34:51Also wenn du jetzt so bestimmte ne zum Beispiel Name,
- 34:54matrikelnummer, ne. Welche Kurse da.
- 34:59Gesucht werden. Was würdest du da?
- 35:01Nee, würdest du da eher eine Datenstruktur nehmen oder
- 35:03würdest du eher ein Objekt nehmen?
- 35:07Also. Deiner Erklärung, das ist
- 35:10ähnlich wie das Personenbeispiel, was ich vorhin
- 35:12genannt habe, würde ich erstmal zu einer Datenstruktur neigen,
- 35:16weil es klingt so, dass ich einfach.
- 35:19Eine Repräsentation eines Studenten einer Studentenperson,
- 35:24weil ich denke mal so Geschlecht oder so wird ja dann vielleicht
- 35:27auch darin abgebildet. Sein, das ist eine reine
- 35:31Repräsentation, ist erst mal um diese Entität abbilden zu
- 35:34können, und da wäre ich jetzt gerade bei einer Datenstruktur,
- 35:37ja. Es sei denn.
- 35:39Diese Personen können denn aktiv irgendeine Logik noch
- 35:43beinhalten, dann wird es dann. Shiften wir ja vielleicht wieder
- 35:47zum Objekt rüber, aber aktuell würde ich sagen, ist das ne
- 35:49Datenstruktur, ja. Also würde ich auch erstmal
- 35:52soweit mitgehen und sagen ne, wenn wir jetzt wirklich diese
- 35:54Daten speichern. Macht das als Datenstruktur auf
- 35:58jeden Fall Sinn mit? Dem.
- 36:03Kleinen Anmerksel, dass man vielleicht sagen könnte, OK,
- 36:05wenn man jetzt aber sagt, ne zum Beispiel sowas hat wie.
- 36:10Sind denn quasi. So und so viel.
- 36:12Also ne irgendwie keine Ahnung, ist der Kursplan komplett ne,
- 36:14weil zum Beispiel die Kurse noch drin stehen und du hast dann
- 36:16sowas wie ja oder nein. Du kannst zum Beispiel darüber
- 36:19dann gucken, ob n Student sozusagen oder ne Studentin
- 36:22wirklich alles richtig also eingetragen hat, die
- 36:26entsprechenden Kurse und so weiter richtig belegt hat und so
- 36:29weiter dann wäre es natürlich wieder funktional.
- 36:32Aber ja. Okay ja, Cooles.
- 36:36Beispiel? Ich würde dir jetzt noch ne
- 36:39Frage stellen und zwar würde ich das Bankthema mal erweitern.
- 36:43Jetzt geht es los. Stell dir vor, du programmierst
- 36:46jetzt dazugehörig eine Banking Anwendung, ne Banking App zum
- 36:51Beispiel. Und.
- 36:52Sollst jetzt implementieren, dass du für Konten feststellst,
- 36:59ob Transaktionen korrekt ausgeführt werden, ob der
- 37:03Zugriff auf kontoinformationen valide ist, also so
- 37:06Sicherheitschecks und das ganze Validieren.
- 37:09Wie würdest du das jetzt machen? Also für mich ist das.
- 37:16Auf jeden Fall eine sehr hohe funktionale Sache, also würde
- 37:20ich da wahrscheinlich auf jeden Fall irgendwie eine Art von
- 37:21Objekt nutzen, weil du kriegst ja bestimmte Daten rein ne und
- 37:26musst dann validieren anhand des entsprechenden Kontos
- 37:29vielleicht, ob zum Beispiel die Daten, die du dann bekommst für
- 37:33dieses Konto sage ich jetzt mal auch wirklich valide sind, ob
- 37:37das funktioniert oder nicht, und dann kriegst du ja sozusagen
- 37:40Daten rein, dann hast du Funktionen, die sagen, das
- 37:43passt, das passt nicht, das ist gut, das ist schlecht.
- 37:47Und würde ich sagen, das sollte man vielleicht dann eher mit
- 37:50einem Objekt, gehe ich auf jeden.
- 37:52Fall mit. Ich merke, ich habe das Beispiel
- 37:54ziemlich umfangreich gemacht, aber wenn wir jetzt mal nur
- 37:57einen Punkt davon nehmen zum Beispiel.
- 38:02Eine Validierung zu machen von Kontoinformationen oder so.
- 38:07Wenn wir jetzt sagen okay, wir haben jetzt so ein Validata.
- 38:11Dann ist das halt wirklich ein Objekt, weil es dir von außen
- 38:14eigentlich. Egal ist, wie das validiert
- 38:16wird, auf welchen Daten das validiert wird, wie überhaupt
- 38:20das passiert. Für dich ist wichtig die
- 38:22Funktion dahinter du möchtest wissen, war dieser Zugriff
- 38:25valide oder nicht und diese Funktion möchtest du von außen
- 38:29haben und das spricht halt ganz klar für einen Objekt sozusagen.
- 38:33Ich finde das auch immer. Schön, wenn man zum Beispiel so
- 38:35überlegt, dass man irgendwie eine irgendein Objekt hat.
- 38:39Wo sage ich jetzt mal so eine Art Passwort hinter ist.
- 38:42Und du willst ja zum Beispiel dieses Passwort, willst du ja
- 38:45gar nicht nach außen hin zugänglich machen, das ist da
- 38:47drin gespeichert, du musst vielleicht sagen okay stimmt
- 38:51dieses Passwort überein oder nicht, sozusagen habe ich diesen
- 38:53Zugriff, ja nein, aber du willst ja zum Beispiel nicht sagen, was
- 38:56ist denn das Passwort oder ich setze mir mal eben mal schnell
- 38:59ein neues Passwort sowas. Ja, cool.
- 39:06Dann habe ich noch eine zweite Frage.
- 39:10Ok. Genau und alle wieder mitraten.
- 39:17Stell dir mal vor, du entwickelst ne Wetter App ne und
- 39:20du möchtest zum Beispiel täglich für eine Analyse vielleicht
- 39:23später möchtest du dir jetzt irgendwie höchst und
- 39:26Tiefsttemperaturen speichern. Ne die zum Beispiel weiß ich
- 39:29nicht über. Immer eine Woche oder egal wie
- 39:33lange ne. Was würdest du da an der Stelle
- 39:35dann zum Beispiel nehmen? Würdest du eher ne Datenstruktur
- 39:37nehmen oder ein Objekt? Ich bin mir nicht sicher.
- 39:41Ob ich das Beispiel richtig verstanden habe?
- 39:43Also geht es darum einfach. Hoch und Tiefstwert zu
- 39:48speichern. Genau.
- 39:52Das wäre jetzt für mich. Ne Datenstruktur, wenn es darum
- 39:55geht, aber irgendwie auf den Wetterdaten nachher max und min
- 39:58und alles zu berechnen, dann gehen wir halt eher in die
- 40:00Richtung Objekt. Deswegen Weih ich mir jetzt
- 40:02nicht sicher, ob ich es richtig verstanden hab, deswegen hab ich
- 40:04da gesagt. Im Anschluss kann man ja dann
- 40:06noch gucken, sozusagen. Aber erstmal hast du ja erstmal.
- 40:08Hast du nur die Speicherung von diesen Werten und.
- 40:14Da glaube ich, sind wir uns einig.
- 40:15Das ist auf jeden Fall ein gutes Beispiel für den Datenschutz zu
- 40:18verwenden. Pass auf.
- 40:22Dann. Auch noch ein Beispiel für ein
- 40:26Beispiel, eine Frage für dich. Dann haben wir 4, das ist,
- 40:29glaube ich, ein ganz Gutes, eine gute Anzahl an Quizfragen.
- 40:35Stell dir folgendes Szenario vor.
- 40:38Du arbeitest an einem E Commerce System und sollst jetzt.
- 40:45Eine Funktionalität ergänzen. Dass wenn der User Artikel zu
- 40:51einem Warenkorb hinzufügt. Dass geprüft wird, ob überhaupt
- 40:58der Lagerbestand ausreichend ist.
- 41:01Oder ZB. Ob ein gültiger Rabattcode
- 41:06verwendet wird und dementsprechend der Preis
- 41:08angepasst werden muss. Was, was würdest du machen?
- 41:15Instinktiv. Instinktiv.
- 41:19Würde ich einfach. Mal sagen.
- 41:21Ich würde da. Nicht ne Datentruppe.
- 41:22Ich würd ein Objekt nehmen. Da das Objekt.
- 41:27Ja. Also.
- 41:28Wär ich auch bei dir, weil das klingt jetzt einfach schon nach
- 41:32nach Logik. Halt ne, also allein schon
- 41:34deswegen hab ich jetzt das mit der Rabattberechnung auch noch
- 41:36mal gesagt, weil das klingt ganz klar nach Logik, Lagerbestand
- 41:40wäre vielleicht noch so ein Diskussionspotenzial, wenn jetzt
- 41:43die Datenstruktur beinhaltet, wie viele davon drin sind, da
- 41:47kann man ja auch wieder drüber streiten, aber angenommen die
- 41:50Datenstruktur beinhaltet den Typ und die Anzahl kann man ja auch
- 41:53sagen ja okay. Rechnest du halt -1 da drauf.
- 41:59Blöd gesagt, aber wenn du halt wirklich anfängst da komplexe
- 42:02Logik einzubauen, dann sollte man das ganze Objekt in einem
- 42:05Objekt Kapseln, ja. O.
- 42:09K cool. Würde ich sagen, haben wir das
- 42:14doch ausführlich besprochen. Es hat mir wieder mal sehr viel
- 42:18Spaß gemacht. Danke dafür, fabi, ich mag
- 42:20unsere cleancode Reihe, weil es einfach selbst einen auch immer
- 42:22noch mal trägert darüber nachzudenken, ja, das hilft.
- 42:27Und. Deshalb, liebe zuhören, liebe
- 42:30Zuhörer, falls du Anmerkungen zu der Folge hast oder Feedback
- 42:33oder auch zu unseren Quizfragen am Ende deshalb noch mal der
- 42:36Aufruf, melde dich gerne bei uns gerne über die Podcast Mail oder
- 42:40über unseren anderen Plattformen, die links und auch
- 42:43die Mail findest du wie immer in den Shownotes.
- 42:46Ansonsten würden wir uns. Freuen, wenn du natürlich so ein
- 42:48234 x Personen diesen Podcast weiter empfiehlst.
- 42:53Falls er dir gefällt. Das würde uns sehr helfen und
- 42:56uns auch sehr freuen ansonsten. Würde ich sagen, ja, hören wir
- 43:00uns alle beim nächsten Mal wieder und bis dahin noch einen
- 43:04schönen Tag deine Coding Boys gemeinsam.
- 43:07Besser.