{"id":55000287,"date":"2016-02-01T00:00:00","date_gmt":"2020-01-24T15:59:24","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=287"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Besseres_CodeLayout","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Besseres_CodeLayout.html","title":{"rendered":"Besseres Code-Layout"},"content":{"rendered":"<p class='introduction'>Die Lesbarkeit von Programmcode beschleunigt sowohl die Entwicklung, wie auch die Wartung Ihrer Anwendungen. Wenn Sie ein Freund der VBA-Programmierung sind, so &uuml;berpr&uuml;fen Sie Ihre Routinen doch einmal auf Struktur und Gestalt. Gibt es hier Verbesserungspotential<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1507_CodeLayout.accdb<\/b><\/p>\n<h2>Strukturierung<\/h2>\n<p>Umso logischer Ihr Code aufgebaut ist, desto mehr Freude  werden Sie sp&auml;ter an ihm haben. <b>Sp&auml;ter<\/b> kann dabei bedeuten, dass Sie schon am n&auml;chsten Tag m&ouml;glichst schnell wieder in die Routinen hineinfinden und nicht unn&ouml;tig Zeit damit verbringen m&uuml;ssen, die Funktionsabfolgen m&uuml;hsam nachzuvollziehen. Erst recht gilt dies, wenn Sie sich zur Wartung oder Weiterentwicklung nach einem Jahr wieder an eine Datenbank machen m&uuml;ssen. Fr&uuml;her galt einmal das Credo, den Code ausf&uuml;hrlich zu kommentieren, um sp&auml;ter so einen Leitfaden vorzufinden, doch was n&uuml;tzt eine Kommentierung oder Dokumentation, wenn die Struktur unzureichend ist<\/p>\n<h2>Modulstrukturen<\/h2>\n<p>Sie finden Funktionen leichter auf, wenn Sie sie auf mehrere Module aufteilen, statt alles in ein Modul zu packen. Sie haben eine Sammlung von immer wieder gebrauchten Routinen, etwa Dateifunktionen, Datumsberechnungen, String-Operationen und solche f&uuml;r den Datenzugriff Leicht k&ouml;nnen dies Hunderte werden, auf die der Zugriff, falls in nur in einem Modul gespeichert, umst&auml;ndlich wird. Die Navigation ist behindert und ausdauerndes Scrollen wird notwendig. Der &uuml;berblick geht verloren.<\/p>\n<p>Da ist es g&uuml;nstiger, wenn Sie Routinen mit &auml;hnlicher Funktionalit&auml;t in thematisch passenden Modulen vereinen. Legen Sie ein Modul f&uuml;r die Dateioperationen an, eines f&uuml;r die String-Bearbeitung und eines f&uuml;r f&uuml;r den Datenzugriff. Damit Sie dann wissen, um was es sich handelt, sind sprechende Namen f&uuml;r die Module angeraten. Eine Bezeichnung, wie <b>mdlFunktionen<\/b>, sagt wenig &uuml;ber den Inhalt aus. Besser fahren Sie da etwa mit <b>mdlFileAccess<\/b>, <b>mdlDataAccessDAO<\/b>, <b>mdlStringHandling<\/b>.<\/p>\n<p>&auml;hnlich, wie bei Variablen- oder Steuerelementnamen hat sich die Verwendung von Pr&auml;fixen eingeb&uuml;rgert. F&uuml;r normale Module kommt meist das Pr&auml;fix <b>mdl<\/b> oder <b>mod<\/b> zum Einsatz, f&uuml;r Klassenmodule ein <b>cls<\/b> oder schlicht ein gro&szlig;es <b>C<\/b>. Englische Bezeichnungen oder deutsche Das bleibt Ihnen &uuml;berlassen. Da jedoch davon auszugehen ist, dass die meisten Programmierer mit englischen Fachbegriffen vertraut sind, liegt man mit englischen Bezeichnungen auf der sicheren Seite. So ist sichergestellt, dass es nicht zu Konfusionen kommt, wenn die Datenbankanwendung oder einzelne Module einmal die L&auml;ndergrenzen &uuml;berschreiten sollten.<\/p>\n<p>Die Frage, wie kleinteilig man Routinen auf Module verstreut, ist schwer zu beantworten. Nat&uuml;rlich k&ouml;nnten Sie Ihre Module so gestalten, dass der Code immer komplett auf eine Bildschirmseite passt. Das aber w&uuml;rde zu &uuml;berh&auml;ufigem Umschalten zwischen den Modulen f&uuml;hren &#8211; schlie&szlig;lich werden die Prozeduren ja wahrscheinlich von anderen aufgerufen. Je umfangreicher andererseits ein Modul ausf&auml;llt, desto mehr Scrollen ist angesagt. Finden Sie hier also einen Mittelweg.<\/p>\n<h2>Prozedurstrukturen<\/h2>\n<p>Innerhalb eines Moduls macht eine logische Anordnung der Prozeduren ebenfalls Sinn. Was hier logisch ist, oder nicht, h&auml;ngt von der Bedeutung der Routinen ab. Nehmen Sie etwa ein Formularmodul. Sinnvoll w&auml;re hier eine Anordnung in der chronologischen Abfolge von Ereignissen. <b>Form_Open<\/b> (<b>Beim &ouml;ffnen<\/b>) ist das erste Ereignis, das ein Formular ausl&ouml;st. Gefolgt wird es von <b>Form_Load<\/b> (<b>Beim Laden<\/b>) und schlie&szlig;lich <b>Form_Current<\/b> (<b>Beim Anzeigen<\/b>). Das Schlie&szlig;en des Formulars l&ouml;st <b>Form_Close<\/b> (<b>Beim Schlie&szlig;en<\/b>) und <b>Form_Unload<\/b> (<b>Beim Entladen<\/b>) aus. Also w&uuml;rde eine Anordnung solcher Ereignisprozeduren von oben nach unten sp&auml;ter n&uuml;tzlich sein. &auml;hnliches gilt f&uuml;r die Steuerelementereignisse, die sich an die Formularereignisse anschlie&szlig;en k&ouml;nnten. Hilfsfunktionen, die von diesen Ereignisprozeduren aufgerufen werden, d&uuml;rfen getrost ganz unten im Modul ihren Raum finden.<\/p>\n<p>Auch bei normalen Modulen ist eine Anordnung der Routinen von bedeutsam bis Hilfsfunktion in vertikaler Richtung praktisch. Denn beim &ouml;ffnen eines Moduls werden Sie in der Regel mit den ersten Zeilen konfrontiert. Da macht es sich gut, wenn hier gleich die relevantesten Code-Teile zu finden sind.<\/p>\n<p>Allerdings gibt es hier in punkto Lesbarkeit auch Einschr&auml;nkungen. Nehmen Sie etwa folgenden Pseudocode:<\/p>\n<pre>Funktion A()\r\n     [Code]\r\n     <span style=\"color:blue;\">Call<\/span> Funktion B\r\n     [Code]\r\nEnde Funktion A\r\nFunktion B()\r\n     [Code]\r\nEnde Funktion B<\/pre>\n<p>Funktion <b>B<\/b> wird also von Funktion <b>A<\/b> ben&ouml;tigt und aufgerufen. Als Hilfsprozedur f&auml;nde Sie weiter unten im Modul ihren Platz. Stie&szlig;en Sie in Funktion <b>A<\/b> bei Durchsicht sp&auml;ter auf den Aufruf von <b>B<\/b>, so m&uuml;ssten Sie weit nach unten scrollen, oder &uuml;ber das Kontextmen&uuml; den Eintrag <b>Definition<\/b> ausw&auml;hlen, um zur Hilfsfunktion <b>B<\/b> zu gelangen. Besser ist es da, wenn die Hilfsfunktion direkt nach der aufrufenden steht. Versuchen Sie, die Prozedurreihenfolge m&ouml;glichst kompakt zu halten. W&uuml;rde Funktion <b>C<\/b> von mehreren Prozeduren ben&ouml;tigt, s&auml;he das zum Beispiel so aus:<\/p>\n<pre>Funktion A()\r\n     [Code]\r\n     <span style=\"color:blue;\">Call<\/span> Funktion C\r\n     [Code]\r\nEnde Funktion A\r\nFunktion B()\r\n     [Code]\r\n     <span style=\"color:blue;\">Call<\/span> Funktion C\r\nEnde Funktion B\r\nFunktion C()\r\n     [Code]\r\nEnde Funktion C\r\nFunktion D()\r\n     [Code]\r\nEnde Funktion D<\/pre>\n<p>&uuml;berhaupt ist die Frage, in wie viele Prozeduren eine Aufgabe aufgeteilt werden kann und soll. Im Beispiel h&auml;tte man auf die Hilfsfunktion <b>C<\/b> ja auch verzichten und deren Code wiederholt in Prozedur <b>A<\/b> und <b>B <\/b>einsetzen k&ouml;nnen. Hier gilt aber der Grundsatz, dass wiederverwendbarer Code sich nicht wiederholen, sondern in eigene Funktionen ausgelagert werden sollte. Erstens macht es die Routinen abermals besser wartbar, denn &auml;nderungen oder Weiterentwicklungen m&uuml;ssen so nur an einer Stelle (Funktion <b>C<\/b>) vollzogen werden, statt an mehreren. Und zweitens sind k&uuml;rzere Prozeduren leichter &uuml;berschaubar, als Spaghetti-Code, der sich l&auml;nglich hinzieht.<\/p>\n<p>Dennoch sollte man diese Strukturierung auch nicht zu weit treiben. Wenn Funktion <b>A <\/b>die Funktion <b>B<\/b> aufruft, diese wiederum Funktion <b>C<\/b>, und <b>C<\/b> verlangt nach <b>D<\/b>, dann ist zum Verstehen von A die ganze verteilte Kette <b>B<\/b> bis <b>D<\/b> zu &uuml;berblicken. Ist das Ganze dann auch noch &uuml;ber mehrere Module verteilt, dann kann von &uuml;berblick eben keine Rede mehr sein. Von sehr komplexen Aufgaben abgesehen, sollte daher in der Regel die Verteilung der Funktionalit&auml;t auf ein bis zwei Unterebenen ausreichen.<\/p>\n<h2>Prozedurstrukturierung<\/h2>\n<p>Innerhalb einer Prozedur gibt es eine Menge Gestaltungspotential. Neben dem reinen Layout, auf das wir sp&auml;ter noch zu sprechen kommen, fragt sich etwa, wo sich die Dim-Anweisungen zur lokalen Variablendeklaration befinden sollten.<\/p>\n<p>Meist stehen diese ganz am Anfang, m&uuml;ssen dies aber nicht. VBA ist es egal, ob die Variablen alle versammelt zu Anfang deklariert werden, oder irgendwo mitten im Code stehen. Zwar ist es weniger fehleranf&auml;llig, wenn die Dim-Anweisungen in einem Block stehen, bei Routinen mit 20 Variablen aber ist dieser Block dann schon ziemlich umfangreich. Sto&szlig;en Sie in der Prozedur auf eine Variablenzuweisung, haben den Datentyp der Variablen aber nicht mehr im Kopf, so ist abermals Scrollen zum Prozedurkopf angesagt. Aus diesem Grund kann es sinnvoll sein, die Variablendeklarationen in langen Prozeduren in mehrere Bl&ouml;cke aufzuteilen. Variablen, die erst weiter unten verwendet werden, k&ouml;nnten dazu eben auch erst sp&auml;ter in einem gesonderten Block deklariert werden. Das erh&ouml;ht wieder die &uuml;bersichtlichkeit.<\/p>\n<h2>Andere Deklarationen<\/h2>\n<p>Im Kopf eines Moduls stehen die Deklarationen zu modulweit oder global g&uuml;ltigen Variablen, sowie gegebenenfalls die API-Deklarationen. Unter Umst&auml;nden sammelt sich hier viel an, wie etwa Listing 1 zeigt.<\/p>\n<pre><span style=\"color:blue;\">Option Compare Database<\/span>\r\n<span style=\"color:blue;\">Option Explicit<\/span>\r\n'&ouml;ffentliche Konstanten\r\n<span style=\"color:blue;\">Public <\/span>Const GWL_STYLE<span style=\"color:blue;\"> As Long<\/span> = -16\r\n<span style=\"color:blue;\">Public <\/span>Const GWL_WNDPROC<span style=\"color:blue;\"> As Long<\/span> = -4\r\n'Private Konstanten\r\n<span style=\"color:blue;\">Private <\/span>Const GW_CHILD<span style=\"color:blue;\"> As Long<\/span> = 5\r\n<span style=\"color:blue;\">Private <\/span>Const GW_HWNDFIRST<span style=\"color:blue;\"> As Long<\/span> = 0\r\n<span style=\"color:blue;\">Private <\/span>Const GW_HWNDLAST<span style=\"color:blue;\"> As Long<\/span> = 1\r\n<span style=\"color:blue;\">Private <\/span>Const GW_HWNDPREV<span style=\"color:blue;\"> As Long<\/span> = 3\r\n'&ouml;ffentliche Typen\r\n<span style=\"color:blue;\">Public <\/span>Type Guid\r\n     Data1<span style=\"color:blue;\"> As Long<\/span>\r\n     Data2<span style=\"color:blue;\"> As Integer<\/span>\r\n     Data3<span style=\"color:blue;\"> As Integer<\/span>\r\n     Data4(0 To 7)<span style=\"color:blue;\"> As Byte<\/span>\r\nEnd Type\r\n'Private Typen\r\n<span style=\"color:blue;\">Private <\/span>Type LUID\r\n     LowPart<span style=\"color:blue;\"> As Long<\/span>\r\n     HighPart<span style=\"color:blue;\"> As Long<\/span>\r\nEnd Type\r\n'&ouml;ffentliche API-Funktionen\r\n<span style=\"color:blue;\">Public <\/span>Declare Function GetWindow Lib \"user32.dll\" ( _\r\n     ByVal hwnd<span style=\"color:blue;\"> As Long<\/span>, _\r\n     ByVal wCmd<span style=\"color:blue;\"> As Long<\/span>)<span style=\"color:blue;\"> As Long<\/span>\r\n'Private API-Funktionen\r\n<span style=\"color:blue;\">Private <\/span>Declare Function SetWindowPos Lib \"user32.dll\" ( _\r\n     ByVal hwnd<span style=\"color:blue;\"> As Long<\/span>, _\r\n     ByVal hWndInsertAfter<span style=\"color:blue;\"> As Long<\/span>, _\r\n     ByVal x<span style=\"color:blue;\"> As Long<\/span>, _\r\n     ByVal y<span style=\"color:blue;\"> As Long<\/span>, _\r\n     ByVal cx<span style=\"color:blue;\"> As Long<\/span>, _\r\n     ByVal cy<span style=\"color:blue;\"> As Long<\/span>, _\r\n     ByVal wFlags<span style=\"color:blue;\"> As Long<\/span>) _\r\n    <span style=\"color:blue;\"> As Long<\/span>\r\n     \r\n'&ouml;ffentliche Variablen\r\n<span style=\"color:blue;\">Public <\/span>dbs<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n'Private Variablen\r\n<span style=\"color:blue;\">Private <\/span>i<span style=\"color:blue;\"> As Long<\/span>, j<span style=\"color:blue;\"> As Long<\/span>\r\n'Prozeduren --------------------<\/pre>\n<p class='imagetext'>Listing 1: Beispiel f&uuml;r Deklarationen in einem Modulkopf<\/p>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Access &#091;basics&#093;<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/282\/access-basics?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 400 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000287\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/index.php\/data\/wp\/v2\/posts\/55000287?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000287\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"2c6d4a5d32\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Lesbarkeit von Programmcode beschleunigt sowohl die Entwicklung, wie auch die Wartung Ihrer Anwendungen. Wenn Sie ein Freund der VBA-Programmierung sind, so &uuml;berpr&uuml;fen Sie Ihre Routinen doch einmal auf Struktur und Gestalt. Gibt es hier Verbesserungspotential<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662015,66072015,44000011],"tags":[],"class_list":["post-55000287","post","type-post","status-publish","format-standard","hentry","category-662015","category-66072015","category-VBAGrundlagen"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.9.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Besseres Code-Layout - Access [basics]<\/title>\n<meta name=\"description\" content=\"Die Lesbarkeit von Programmcode beschleunigt sowohl die Entwicklung, wie auch die Wartung Ihrer Anwendungen. Wenn Sie ein Freund der VBA-Programmierung sind, so \u00fcberpr\u00fcfen Sie Ihre Routinen doch einmal auf Struktur und Gestalt. Gibt es hier Verbesserungspotential?\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Besseres_CodeLayout.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Besseres Code-Layout - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Die Lesbarkeit von Programmcode beschleunigt sowohl die Entwicklung, wie auch die Wartung Ihrer Anwendungen. Wenn Sie ein Freund der VBA-Programmierung sind, so \u00fcberpr\u00fcfen Sie Ihre Routinen doch einmal auf Struktur und Gestalt. Gibt es hier Verbesserungspotential?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Besseres_CodeLayout.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:59:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/..\/tl_files\/images\/SmartIdenter.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\">\n\t<meta name=\"twitter:data1\" content=\"15\u00a0Minuten\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/access-basics.de\/#website\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Access [basics]\",\"description\":\"DAS ACCESS-MAGAZIN F\\u00dcR ALLE, DIE VON 0 AUF 100 WOLLEN\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/access-basics.de\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Besseres_CodeLayout.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/SmartIdenter.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Besseres_CodeLayout.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Besseres_CodeLayout.html\",\"name\":\"Besseres Code-Layout - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Besseres_CodeLayout.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:59:24+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Die Lesbarkeit von Programmcode beschleunigt sowohl die Entwicklung, wie auch die Wartung Ihrer Anwendungen. Wenn Sie ein Freund der VBA-Programmierung sind, so \\u00fcberpr\\u00fcfen Sie Ihre Routinen doch einmal auf Struktur und Gestalt. Gibt es hier Verbesserungspotential?\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Besseres_CodeLayout.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Besseres_CodeLayout.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Besseres_CodeLayout.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Besseres_CodeLayout.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Besseres_CodeLayout.html\",\"name\":\"Besseres Code-Layout\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000287","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/comments?post=55000287"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000287\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}