{"id":1063,"date":"2024-09-09T08:00:40","date_gmt":"2024-09-09T06:00:40","guid":{"rendered":"https:\/\/development-by.schwarzer.de\/blog\/?p=1063"},"modified":"2024-09-11T14:02:47","modified_gmt":"2024-09-11T12:02:47","slug":"rule-of-three-oder-je-einfacher-desto-besser","status":"publish","type":"post","link":"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/","title":{"rendered":"&#8220;Rule of three&#8221; oder &#8220;Je einfacher, desto besser&#8221;"},"content":{"rendered":"<p><!-- <ezTOC> -->Softwareentwicklung ist eine komplexe T\u00e4tigkeit, bei der es leicht ist, sich in Details zu verlieren. Eine Gewohnheit, die unter Entwicklern weit verbreitet ist, ist das vorzeitige Implementieren von Strukturen, die vielleicht sp\u00e4ter n\u00fctzlich sein k\u00f6nnten. Doch was auf den ersten Blick wie eine vorausschauende Planung erscheint, entpuppt sich oft als Hindernis f\u00fcr die Produktivit\u00e4t und Wartbarkeit des Codes. In diesem Blogbeitrag werfen wir einen Blick auf diese Entwickler-Gewohnheit, die Risiken, die sie mit sich bringt, und wie man durch einfachere Ans\u00e4tze bessere Ergebnisse erzielen kann.<br \/>\n<!--more--><\/p>\n<h2>Die Gewohnheit: Alles coden, was jemals noch ben\u00f6tigt werden k\u00f6nnte<\/h2>\n<p>In der Softwareentwicklung ist Struktur alles. Eine gut durchdachte Architektur kann Projekte stabilisieren und langfristig wartbar machen. Wenn jedoch ein neues Feature entwickelt wird und nicht perfekt in die bestehende Infrastruktur passt, versp\u00fcren viele Entwickler den Drang, sofort eine generelle L\u00f6sung zu schaffen. Statt einfach nur die ben\u00f6tigte Klasse zu implementieren, wird oft ein Interface definiert, das die Klasse abstrahiert. Mit dieser Generalisierung entstehen schnell Interface-Hierarchien, abstrakte Klassen und komplexe Abzweigungen.<\/p>\n<p>Das Ziel dabei ist klar: zuk\u00fcnftige Erweiterungen sollen einfach integriert werden k\u00f6nnen, und die Codebasis soll flexibel bleiben. Doch oft endet man mit einer \u00fcberm\u00e4\u00dfig komplizierten Struktur, die in alle denkbaren Richtungen abstrahiert und generalisiert ist \u2013 selbst dann, wenn es daf\u00fcr aktuell keine konkreten Anforderungen gibt.<\/p>\n<h2>Warum das problematisch ist<\/h2>\n<p>Das eigentliche Problem dieser Vorgehensweise liegt darin, dass solche vorauseilenden Strukturen oft auf Annahmen basieren, die sich als falsch herausstellen. Wenn das neue Feature sich nicht etabliert oder wenn die erwarteten Erweiterungen ausbleiben, bleibt der Entwickler auf einer komplexen Architektur sitzen, die unn\u00f6tigen Ballast darstellt. Diese Komplexit\u00e4t erschwert nicht nur das Debugging und die Wartung, sondern f\u00fchrt auch dazu, dass das Projekt unn\u00f6tig aufgebl\u00e4ht wird.<\/p>\n<p>Ein weiteres Problem ist, dass der \u201eSweet Spot\u201c oft nicht getroffen wird. Dieser liegt irgendwo zwischen zu wenig und zu viel Struktur. Anstatt pragmatisch und agil zu arbeiten, verliert man sich in theoretischen Konstrukten, die den eigentlichen Fortschritt hemmen. Die Entwicklung wird langsamer, und die Flexibilit\u00e4t, die urspr\u00fcnglich angestrebt wurde, schl\u00e4gt in Un\u00fcbersichtlichkeit und Starrheit um.<\/p>\n<h2>Wie man es besser macht: Die \u201eRule of Three\u201c anwenden<\/h2>\n<p>Ein Ansatz, der hier Abhilfe schaffen kann, ist die von Martin Fowler vorgeschlagene \u201eRule of Three\u201c. Diese Regel besagt, dass man eine generelle Struktur erst dann implementieren sollte, wenn mindestens drei konkrete Anwendungsf\u00e4lle daf\u00fcr existieren oder absehbar sind.<\/p>\n<p>Anstatt direkt zu Beginn Interfaces und Abstraktionen zu schaffen, sollte man zun\u00e4chst auf einfache, direkte L\u00f6sungen setzen. Wenn sich im Laufe der Entwicklung zeigt, dass tats\u00e4chlich mehrere Anwendungen f\u00fcr eine Struktur erforderlich sind, kann man diese dann gezielt implementieren. Auf diese Weise bleibt der Code schlank und klar, und man vermeidet unn\u00f6tige Komplexit\u00e4t, bevor sie tats\u00e4chlich ben\u00f6tigt wird.<\/p>\n<h2>Warum das besser ist<\/h2>\n<p>Die Anwendung der \u201eRule of Three\u201c hat viele Vorteile. Erstens bleibt der Code dadurch einfacher und wartbarer. Anstatt den Fokus auf potenzielle zuk\u00fcnftige Anforderungen zu legen, konzentriert man sich auf das Hier und Jetzt. Das spart nicht nur Zeit, sondern auch Ressourcen, die besser in die tats\u00e4chliche Entwicklung gesteckt werden k\u00f6nnen.<\/p>\n<p>Zweitens erm\u00f6glicht dieser Ansatz eine agilere Arbeitsweise. Wenn sich Anforderungen \u00e4ndern \u2013 was in der Softwareentwicklung h\u00e4ufig der Fall ist \u2013 ist man flexibler und kann schneller reagieren. Die Gefahr, dass man sich in unn\u00f6tiger Komplexit\u00e4t verliert, wird deutlich verringert.<\/p>\n<p>Schlie\u00dflich f\u00f6rdert die \u201eRule of Three\u201c ein besseres Verst\u00e4ndnis f\u00fcr die tats\u00e4chlichen Bed\u00fcrfnisse des Projekts. Anstatt Annahmen \u00fcber die Zukunft zu treffen, l\u00e4sst man das Produkt organisch wachsen. Wenn dann wirklich Bedarf an Generalisierungen besteht, sind die Anforderungen klarer und die L\u00f6sung pr\u00e4ziser.<\/p>\n<h2>Fazit<\/h2>\n<p>Die \u201eRule of Three\u201c ist mehr als nur ein Refactoring-Prinzip \u2013 sie ist eine Philosophie, die dazu beitr\u00e4gt, unn\u00f6tige Komplexit\u00e4t zu vermeiden und den Fokus auf das Wesentliche zu richten. Softwareentwicklung ist nicht nur eine Frage der Technik, sondern auch der richtigen Balance. Weniger ist oft mehr, und einfache L\u00f6sungen f\u00fchren oft zu den besten Ergebnissen.<\/p>\n<p>Wie reduzieren Sie Komplexit\u00e4t in Ihrer Entwicklung?<\/p>\n<p>Ihre Fragen dazu beantwortet unser Head of DevOps gerne:<br \/>\nKai Rumrich, <a href=\"mailto:kai.rumrich@schwarzer.de\">kai.rumrich@schwarzer.de<\/a>, Jetzt anrufen: +49 6131 \/ 30 292 34<!-- <\/ezTOC> --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Softwareentwicklung ist eine komplexe T\u00e4tigkeit, bei der es leicht ist, sich in Details zu verlieren. Eine Gewohnheit, die unter Entwicklern [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1064,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"features_image":"https:\/\/development-by.schwarzer.de\/blog\/wp-content\/uploads\/2024\/08\/rule-of-three.jpg","rk_cat":null,"rk_date":"09.09.2024","yoast_head":"<title>&quot;Rule of three&quot; oder &quot;Je einfacher, desto besser&quot; - development-by.schwarzer.de<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"&quot;Rule of three&quot; oder &quot;Je einfacher, desto besser&quot; - development-by.schwarzer.de\" \/>\n<meta property=\"og:description\" content=\"Softwareentwicklung ist eine komplexe T\u00e4tigkeit, bei der es leicht ist, sich in Details zu verlieren. Eine Gewohnheit, die unter Entwicklern [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/\" \/>\n<meta property=\"og:site_name\" content=\"development-by.schwarzer.de\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-09T06:00:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-11T12:02:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/development-by.schwarzer.de\/blog\/wp-content\/uploads\/2024\/08\/rule-of-three.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1079\" \/>\n\t<meta property=\"og:image:height\" content=\"378\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hans-J\u00fcrgen Schwarzer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/#website\",\"url\":\"https:\/\/development-by.schwarzer.de\/blog\/\",\"name\":\"development-by.schwarzer.de\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/development-by.schwarzer.de\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de-DE\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/#primaryimage\",\"inLanguage\":\"de-DE\",\"url\":\"https:\/\/development-by.schwarzer.de\/blog\/wp-content\/uploads\/2024\/08\/rule-of-three.jpg\",\"contentUrl\":\"https:\/\/development-by.schwarzer.de\/blog\/wp-content\/uploads\/2024\/08\/rule-of-three.jpg\",\"width\":1079,\"height\":378,\"caption\":\"\\\"Rule of three\\\" oder \\\"Je einfacher, desto besser\\\" (Foto: AdobeStock - magele-picture 582427857)\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/#webpage\",\"url\":\"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/\",\"name\":\"\\\"Rule of three\\\" oder \\\"Je einfacher, desto besser\\\" - development-by.schwarzer.de\",\"isPartOf\":{\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/#primaryimage\"},\"datePublished\":\"2024-09-09T06:00:40+00:00\",\"dateModified\":\"2024-09-11T12:02:47+00:00\",\"author\":{\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/#\/schema\/person\/31bc0011f4b960a9aa559e3f04da4a06\"},\"breadcrumb\":{\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/#breadcrumb\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/development-by.schwarzer.de\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"&#8220;Rule of three&#8221; oder &#8220;Je einfacher, desto besser&#8221;\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/#\/schema\/person\/31bc0011f4b960a9aa559e3f04da4a06\",\"name\":\"Hans-J\u00fcrgen Schwarzer\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/#personlogo\",\"inLanguage\":\"de-DE\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2e9a54aaac87c32742c669aa0d5556c1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2e9a54aaac87c32742c669aa0d5556c1?s=96&d=mm&r=g\",\"caption\":\"Hans-J\u00fcrgen Schwarzer\"},\"description\":\"Hans-J\u00fcrgen Schwarzer leitet die Digital-Agentur schwarzer.de software + internet gmbh. Als Unternehmer und Verleger in Personalunion wie auch als leidenschaftlicher Blogger geh\u00f6rt er zu den Hauptautoren verschiedener Online-Magazine. Innerhalb seiner breiten Palette an Themen liegen dem Mainzer Lokalpatrioten dabei vermeintlich \u201eschr\u00e4ge\u201c Ideen und technische Novit\u00e4ten besonders am Herzen - Nerdstuff, wie es heute hei\u00dft.\",\"sameAs\":[\"http:\/\/www.schwarzer.de\"],\"url\":\"#\"}]}<\/script>","yoast_head_json":{"title":"\"Rule of three\" oder \"Je einfacher, desto besser\" - development-by.schwarzer.de","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/","og_locale":"de_DE","og_type":"article","og_title":"\"Rule of three\" oder \"Je einfacher, desto besser\" - development-by.schwarzer.de","og_description":"Softwareentwicklung ist eine komplexe T\u00e4tigkeit, bei der es leicht ist, sich in Details zu verlieren. Eine Gewohnheit, die unter Entwicklern [&hellip;]","og_url":"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/","og_site_name":"development-by.schwarzer.de","article_published_time":"2024-09-09T06:00:40+00:00","article_modified_time":"2024-09-11T12:02:47+00:00","og_image":[{"width":1079,"height":378,"url":"https:\/\/development-by.schwarzer.de\/blog\/wp-content\/uploads\/2024\/08\/rule-of-three.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Hans-J\u00fcrgen Schwarzer","Gesch\u00e4tzte Lesezeit":"4 Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/development-by.schwarzer.de\/blog\/#website","url":"https:\/\/development-by.schwarzer.de\/blog\/","name":"development-by.schwarzer.de","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/development-by.schwarzer.de\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de-DE"},{"@type":"ImageObject","@id":"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/#primaryimage","inLanguage":"de-DE","url":"https:\/\/development-by.schwarzer.de\/blog\/wp-content\/uploads\/2024\/08\/rule-of-three.jpg","contentUrl":"https:\/\/development-by.schwarzer.de\/blog\/wp-content\/uploads\/2024\/08\/rule-of-three.jpg","width":1079,"height":378,"caption":"\"Rule of three\" oder \"Je einfacher, desto besser\" (Foto: AdobeStock - magele-picture 582427857)"},{"@type":"WebPage","@id":"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/#webpage","url":"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/","name":"\"Rule of three\" oder \"Je einfacher, desto besser\" - development-by.schwarzer.de","isPartOf":{"@id":"https:\/\/development-by.schwarzer.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/#primaryimage"},"datePublished":"2024-09-09T06:00:40+00:00","dateModified":"2024-09-11T12:02:47+00:00","author":{"@id":"https:\/\/development-by.schwarzer.de\/blog\/#\/schema\/person\/31bc0011f4b960a9aa559e3f04da4a06"},"breadcrumb":{"@id":"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/#breadcrumb"},"inLanguage":"de-DE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/development-by.schwarzer.de\/blog\/rule-of-three-oder-je-einfacher-desto-besser\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/development-by.schwarzer.de\/blog\/"},{"@type":"ListItem","position":2,"name":"&#8220;Rule of three&#8221; oder &#8220;Je einfacher, desto besser&#8221;"}]},{"@type":"Person","@id":"https:\/\/development-by.schwarzer.de\/blog\/#\/schema\/person\/31bc0011f4b960a9aa559e3f04da4a06","name":"Hans-J\u00fcrgen Schwarzer","image":{"@type":"ImageObject","@id":"https:\/\/development-by.schwarzer.de\/blog\/#personlogo","inLanguage":"de-DE","url":"https:\/\/secure.gravatar.com\/avatar\/2e9a54aaac87c32742c669aa0d5556c1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2e9a54aaac87c32742c669aa0d5556c1?s=96&d=mm&r=g","caption":"Hans-J\u00fcrgen Schwarzer"},"description":"Hans-J\u00fcrgen Schwarzer leitet die Digital-Agentur schwarzer.de software + internet gmbh. Als Unternehmer und Verleger in Personalunion wie auch als leidenschaftlicher Blogger geh\u00f6rt er zu den Hauptautoren verschiedener Online-Magazine. Innerhalb seiner breiten Palette an Themen liegen dem Mainzer Lokalpatrioten dabei vermeintlich \u201eschr\u00e4ge\u201c Ideen und technische Novit\u00e4ten besonders am Herzen - Nerdstuff, wie es heute hei\u00dft.","sameAs":["http:\/\/www.schwarzer.de"],"url":"#"}]}},"_links":{"self":[{"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/1063"}],"collection":[{"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/comments?post=1063"}],"version-history":[{"count":3,"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/1063\/revisions"}],"predecessor-version":[{"id":1068,"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/1063\/revisions\/1068"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/media\/1064"}],"wp:attachment":[{"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/media?parent=1063"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/categories?post=1063"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/tags?post=1063"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}