{"id":21,"date":"2015-04-26T14:00:47","date_gmt":"2015-04-26T12:00:47","guid":{"rendered":"http:\/\/ccd.ralfw.domainfactory-kunde.de\/?page_id=21"},"modified":"2024-10-17T13:28:23","modified_gmt":"2024-10-17T11:28:23","slug":"grado-rojo","status":"publish","type":"page","link":"https:\/\/clean-code-developer.de\/es\/die-grade\/roter-grad\/","title":{"rendered":"Grado rojo"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"21\" class=\"elementor elementor-21\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-78dfb12 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"78dfb12\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c4ab53f\" data-id=\"c4ab53f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-90c5c87 elementor-widget elementor-widget-text-editor\" data-id=\"90c5c87\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><!-- \/wp:heading --><!-- wp:heading --><\/p>\n<p><!-- \/wp:heading --><!-- wp:paragraph --><\/p>\n<p>Mit dem roten Grad beginnt der Weg des Clean Code Developers. Ab hier gilt es, einen ersten Teil der Clean Code Developer Bausteine in die t\u00e4gliche Arbeit einzubringen und immer wieder zu \u00fcben. Der rote Grad ist so gestaltet, dass jeder Entwickler hier mit minimalem Aufwand einsteigen kann. Ver\u00e4nderungen an den Projektverh\u00e4ltnissen sollten kaum n\u00f6tig sein. Seinen Weg als Clean Code Developer kann also jeder auch &#8222;in aller Stille&#8220; beginnen.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:heading --><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-299a063 elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents\" data-id=\"299a063\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;exclude_headings_by_selector&quot;:[],&quot;headings_by_tags&quot;:[&quot;h2&quot;,&quot;h3&quot;,&quot;h4&quot;,&quot;h5&quot;,&quot;h6&quot;],&quot;marker_view&quot;:&quot;numbers&quot;,&quot;no_headings_message&quot;:&quot;Es wurden keine \\u00dcberschriften auf dieser Seite gefunden.&quot;,&quot;minimize_box&quot;:&quot;yes&quot;,&quot;minimized_on&quot;:&quot;tablet&quot;,&quot;hierarchical_view&quot;:&quot;yes&quot;,&quot;min_height&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"table-of-contents.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-toc__header\">\n\t\t\t\t\t\t<h4 class=\"elementor-toc__header-title\">\n\t\t\t\tInhaltsverzeichnis\t\t\t<\/h4>\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--expand\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__299a063\" aria-expanded=\"true\" aria-label=\"Inhaltsverzeichnis \u00f6ffnen\"><i aria-hidden=\"true\" class=\"fas fa-chevron-down\"><\/i><\/div>\n\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--collapse\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__299a063\" aria-expanded=\"true\" aria-label=\"Inhaltsverzeichnis schlie\u00dfen\"><i aria-hidden=\"true\" class=\"fas fa-chevron-up\"><\/i><\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<div id=\"elementor-toc__299a063\" class=\"elementor-toc__body\">\n\t\t\t<div class=\"elementor-toc__spinner-container\">\n\t\t\t\t<i class=\"elementor-toc__spinner eicon-animation-spin eicon-loading\" aria-hidden=\"true\"><\/i>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f54aa5e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f54aa5e\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-cbab5c9\" data-id=\"cbab5c9\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b3877ed elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"b3877ed\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<i aria-hidden=\"true\" class=\"icon icon-Prinzip\"><\/i>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-ad9fdb6\" data-id=\"ad9fdb6\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-276e954 elementor-widget elementor-widget-heading\" data-id=\"276e954\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Prinzipien<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2bce811 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2bce811\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d912ac2\" data-id=\"d912ac2\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-12f4ac0 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"12f4ac0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9d39840 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9d39840\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-322d857\" data-id=\"322d857\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f460910 elementor-widget elementor-widget-image\" data-id=\"f460910\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/clean-code-developer.de\/wp-content\/uploads\/elementor\/thumbs\/icon_14_dont-repeat-yourself-qvog2womjalqt9n7unofs8wpuu9h3bfuj6ny06i5j4.png\" title=\"Don&#8217;t Repeat Yourself (DRY)\" alt=\"Don&#039;t Repeat Yourself (DRY)\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-b18787c\" data-id=\"b18787c\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e19e582 elementor-widget elementor-widget-heading\" data-id=\"e19e582\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Don't Repeat Yourself (DRY)<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4e1274a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4e1274a\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-cd83eef\" data-id=\"cd83eef\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2851401 elementor-widget elementor-widget-text-editor\" data-id=\"2851401\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"box\"><strong>Warum?<\/strong><br \/>Jede Doppelung von Code oder Handgriffen leistet Inkonsistenzen und Fehlern Vorschub.<\/div>\n<p><!-- \/wp:html --><!-- wp:html --><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-084eea6 elementor-widget elementor-widget-text-editor\" data-id=\"084eea6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<!-- wp:html --><\/p>\n<div class=\"core-points\">\n<table>\n<tbody>\n<tr>\n<th>Wandelbarkeit<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Korrektheit<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Produktionseffizienz<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Kontinuierliche Verbesserung<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Single Developer<\/th>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><!-- \/wp:html -->\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-89ffc85 elementor-widget elementor-widget-text-editor\" data-id=\"89ffc85\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Das DRY-Prinzip lautet: <i>Don&#8217;t Repeat Yourself<\/i> \u2013 Wiederhole dich nicht. Es gilt seit den Anf\u00e4ngen der Softwareentwicklung \u2013 sonst g\u00e4be es keine Unterprogramme und keine Datennormalisierung. Dennoch ist es wahrscheinlich das am meisten missachtete Prinzip. Denn nichts ist einfacher, als Code durch Copy&amp;Paste zu wiederholen. Gerade dann, wenn es mal schnell gehen soll, passiert das allzuoft.<\/p>\n<p><!-- \/wp:paragraph --><!-- wp:paragraph --><\/p>\n<p>Clean Code Developer \u00fcben sich im roten Grad daher darin, dieses Prinzip stets zu beachten. Sie sind sich bewusst, wann sie Code oder andere Artefakte wiederholen. Sie erkennen solche Wiederholungen, die sie selbst oder andere erzeugt haben. Sie bereinigen Wiederholungen durch Refaktorisierungen \u2013 wenn keine anderen Prinzipien oder Beschr\u00e4nkungen dagegen sprechen.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b18ae32 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"b18ae32\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f796ef2 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f796ef2\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-32a31f1\" data-id=\"32a31f1\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6ae1fa6 elementor-widget elementor-widget-image\" data-id=\"6ae1fa6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/clean-code-developer.de\/wp-content\/uploads\/elementor\/thumbs\/icon_25_keep-it-simple-stupid-qvog5s2vf2jaadh12wdeeitf783um0ublefcsm8uio.png\" title=\"Keep it Simple Stupid (KISS)\" alt=\"Keep it Simple Stupid (KISS)\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-0c6f71d\" data-id=\"0c6f71d\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7650411 elementor-widget elementor-widget-heading\" data-id=\"7650411\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Keep it simple, stupid (KISS)<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-43e8467 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"43e8467\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-59d7bbd\" data-id=\"59d7bbd\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5d8ecda elementor-widget elementor-widget-text-editor\" data-id=\"5d8ecda\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"box\"><strong>Warum?<\/strong><br \/>Wer mehr tut als das Einfachste, l\u00e4sst den Kunden warten und macht die L\u00f6sung unn\u00f6tig kompliziert.<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:html --><\/p>\n<div class=\"core-points\">\n<table>\n<tbody>\n<tr>\n<th>Wandelbarkeit<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Korrektheit<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Produktionseffizienz<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Kontinuierliche Verbesserung<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Single Developer<\/th>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Oder um es mit Albert Einsteins Worten zu sagen: &#8222;Alles sollte so einfach wie m\u00f6glich gemacht werden, aber nicht einfacher.&#8220;. F\u00fcr die Wandelbarkeit des Codes ist zwingende Voraussetzung, dass der Code verst\u00e4ndlich ist. Eine einfache, klare und leicht verst\u00e4ndliche L\u00f6sung sollte daher immer bevorzugt werden. Wenn man seinen eigenen Code nach kurzer Zeit schon nicht mehr versteht, sollten die Alarmglocken klingen. Noch wichtiger aber ist, dass auch andere Entwickler den Code schnell verstehen k\u00f6nnen. Dabei helfen regelm\u00e4\u00dfige Reviews und Pair Programming. Sie dienen der Kontrolle, ob tats\u00e4chlich die einfachste L\u00f6sung verwendet wurde.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Gerade in technischen Details steckt die Versuchung, eine komplizierte L\u00f6sung anzustreben. Das Bekannte, naheliegende ist manchmal zu &#8222;langweilig&#8220; \u2013 und schon hat sich eine komplizierte L\u00f6sung eingeschlichen. Wenn die einfache L\u00f6sung auch funktioniert, sollte ihr Vorrang gew\u00e4hrt werden. Das gleiche gilt f\u00fcr Datenstrukturen. Wenn ein <i>IEnumerable<\/i> reicht, sollte keine <i>ICollection<\/i> oder sogar <i>IList<\/i> verwendet werden.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a55bcd3 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"a55bcd3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-bc27d35 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"bc27d35\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-8097336\" data-id=\"8097336\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f533791 elementor-widget elementor-widget-image\" data-id=\"f533791\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/clean-code-developer.de\/wp-content\/uploads\/elementor\/thumbs\/icon_3_beware-of-premature-optimization-qvogqbtutony3hmi3a4seu56pgtpvtf2r3uhhds0hs.png\" title=\"Beware of Premature Optimization\" alt=\"Beware of Premature Optimization\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-87f688f\" data-id=\"87f688f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ea05671 elementor-widget elementor-widget-heading\" data-id=\"ea05671\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Beware of Premature Optimization<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-5794734 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5794734\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c734074\" data-id=\"c734074\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7cac9be elementor-widget elementor-widget-text-editor\" data-id=\"7cac9be\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"box\"><strong>Warum?<\/strong><br \/>Optimierungen kosten immer viel Aufwand. Wer Vorsicht walten l\u00e4sst, spart oft wertvolle Ressourcen f\u00fcr das, was dem Kunden wirklich n\u00fctzt.<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:html --><\/p>\n<div class=\"core-points\">\n<table>\n<tbody>\n<tr>\n<th>Wandelbarkeit<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Korrektheit<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Produktionseffizienz<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Kontinuierliche Verbesserung<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Single Developer<\/th>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p><a title=\"M.A. Jackson\" href=\"http:\/\/en.wikipedia.org\/wiki\/Michael_A._Jackson\" target=\"_blank\" rel=\"noopener noreferrer\">M.A. Jackson<\/a>:<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:html --><\/p>\n<div class=\"box\">Rules of Optimization:<br \/>Rule 1: Don&#8217;t do it.<br \/>Rule 2 (for experts only): Don&#8217;t do it yet.<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p><a title=\"W.A. Wulf\" href=\"http:\/\/en.wikipedia.org\/wiki\/William_Wulf\" target=\"_blank\" rel=\"noopener noreferrer\">W.A. Wulf<\/a>:<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:html --><\/p>\n<div class=\"box\">More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason \u2013 including blind stupidity.<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:html --><\/p>\n<div>\u00a0<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Im Vordergrund steht immer die Verst\u00e4ndlichkeit von Code. Optimierter Code ist aber oft alles andere als lesbar. Indem er auf das absolut Notwendige in k\u00fcrzester Form reduziert ist, mag er zwar die funktionalen und nicht funktionalen Anforderungen des Kunden erf\u00fcllen \u2013 doch er spiegelt sie meist nicht mehr verst\u00e4ndlich wider. Das ist kontraproduktiv im Sinne der meist gew\u00fcnschten Langlebigkeit einer Software. Donald Knuth schrieb bereits 1974: &#8222;<i>We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.<\/i>&#8220; (Knuth, Donald. <a title=\"Structured Programming with go to Statements\" href=\"http:\/\/web.archive.org\/web\/20130803163743\/http:\/\/pplab.snu.ac.kr\/courses\/adv_pl05\/papers\/p261-knuth.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Structured Programming with go to Statements<\/a>, ACM Journal Computing Surveys, Vol 6, No. 4, Dec. 1974. p.268.)<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Die Pfadfinderregel ist also nicht so gemeint, dass immer weiter nach Codeoptimierungen gestrebt werden sollte. Sie bezieht sich vielmehr auf deren Gegenteil: Verst\u00e4ndlichkeit und Wandelbarkeit.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Wenn es dem Clean Code Developer also in den Fingern zuckt, weil er denkt, er k\u00f6nne doch noch ein Qu\u00e4ntchen Performance durch eine Optimierung herausholen, dann sollte er mindestens zweimal \u00fcberlegen. Zum einen w\u00fcrde er dadurch die Verst\u00e4ndlichkeit verschlechtern, zum anderen aber ist es wahrscheinlich, dass solche Optimierung aus mehreren Gr\u00fcnden gar nicht n\u00f6tig ist. Ist die Performanceschw\u00e4che nicht nur punktuell und ein Sonderfall, wird sich die n\u00e4chste gr\u00f6\u00dfere Refaktorisierung ihrer wahrscheinlich ohnehin annehmen, denn dann liegt ihr ein grunds\u00e4tzliches Strukturproblem zugrunde. Oder die n\u00e4chste Hardwaregeneration b\u00fcgelt den Performanceknick aus. Oder der Kunde f\u00fchlt sich durch ihn gar nicht gest\u00f6rt. Ohnehin muss der Kunde die Forderung nach der Optimierung gestellt haben. Keine Codever\u00e4nderung ohne vom Kunden erwarteten Nutzen. Denn nur f\u00fcr ihn ist er bereit zu zahlen.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Der Regel, sich im Zweifelsfall gegen Optimierungen zu entscheiden, liegt somit eine noch fundamentalere zugrunde: YAGNI &#8211; <i>You ain&#8217;t gonna need it<\/i>. Sie ist in ihrer vollen Auspr\u00e4gung allerdings erst Bestandteil des <a title=\"Blauer Grad\" href=\"http:\/\/clean-code-developer.de\/die-grade\/blauer-grad\/\">blauen Grades<\/a>.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>PS: Wenn denn entgegen allen Warnungen und Bedenken gerade eine Performanceoptimierung unumg\u00e4nglich ist, dann sollte sie immer nur aufgrund einer detaillierten Analyse mit einem Profiler begonnen werden. Denn nur wer mit einem Profiler nachvollziehbar Performance-Engp\u00e4sse lokalisiert hat, kann w\u00e4hrend und nach der Optimierung pr\u00fcfen, ob und inwiefern er sie geweitet hat.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f1e7fa9 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"f1e7fa9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9c5c089 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9c5c089\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-310aa41\" data-id=\"310aa41\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2db68fb elementor-widget elementor-widget-image\" data-id=\"2db68fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/clean-code-developer.de\/wp-content\/uploads\/elementor\/thumbs\/icon_16_favour-composition-over-inheritance-qvogwfs38x11k8r0ex7hman1pmplwzo9lci3s4pw1s.png\" title=\"Favour Composition over Inheritance (FCoI)\" alt=\"Favour Composition over Inheritance (FCoI)\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-028ff39\" data-id=\"028ff39\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c9b46ee elementor-widget elementor-widget-heading\" data-id=\"c9b46ee\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Favour Composition over Inheritance (FCoI)<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9231031 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9231031\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-bf2e54b\" data-id=\"bf2e54b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b0abeab elementor-widget elementor-widget-text-editor\" data-id=\"b0abeab\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"box\"><strong>Warum?<\/strong><br \/>Komposition f\u00f6rdert die lose Kopplung und die Testbarkeit eines Systems und ist oft flexibler.<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:html --><\/p>\n<div class=\"core-points\">\n<table>\n<tbody>\n<tr>\n<th>Wandelbarkeit<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Korrektheit<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Produktionseffizienz<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Kontinuierliche Verbesserung<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Single Developer<\/th>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>F\u00fcr die Wiederverwendung von Funktionalit\u00e4t kennt die Objektorientierte Programmierung (OOP) zwei sehr bekannte Kandidaten: Die Vererbung (whitebox \u2013 reuse) und die Komposition (blackbox \u2013 reuse). Verwendet man Funktionalit\u00e4t wieder durch das Ableiten von einer Klasse, so ist die Subklasse abh\u00e4ngig von der Elternklasse. Dies macht ein System in vielen F\u00e4llen unn\u00f6tig komplex, schlechter testbar und erschwert das Austauschen von Funktionalit\u00e4t zur Laufzeit. CCD hat f\u00fcr das korrekte Ableiten das Liskov Substitution Prinzip (LSP) bereit, das es dabei zu befolgen gilt.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Bei der Komposition verwendet eine Klasse eine andere. Verwendet man dazu eine klar definierte Schnittstelle, f\u00f6rdert das die Entkopplung. Auch k\u00f6nnen verschiedene Implementationen einfach ausgetauscht werden. Bevor man sich also der Liskov Substitution stellt, fordert Favour Composition over Inheritance, sich die Frage zu stellen, ob man der Komposition nicht Vorrang geben kann.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>&#8222;<i>Because inheritance exposes a subclass to details of its parent&#8217;s implementation, it&#8217;s often said that &#8218;inheritance breaks encapsulation<\/i>&#8222;. (Gang of Four 1995:19)<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-579ff4c elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"579ff4c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6c5f915 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6c5f915\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-2209282\" data-id=\"2209282\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c833cbf elementor-widget elementor-widget-image\" data-id=\"c833cbf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/clean-code-developer.de\/wp-content\/uploads\/elementor\/thumbs\/icon_20_iosp-qvogz7ezdctfqwqa949xylhwoh2ikwntb1nkngm5q8.png\" title=\"Integration Operation Segregation Principle (IOSP)\" alt=\"Integration Operation Segregation Principle (IOSP)\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-73b637a\" data-id=\"73b637a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6d39aa4 elementor-widget elementor-widget-heading\" data-id=\"6d39aa4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Integration Operation Segregation Principle (IOSP)<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-95345e5 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"95345e5\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0d2bc0a\" data-id=\"0d2bc0a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f54de8e elementor-widget elementor-widget-text-editor\" data-id=\"f54de8e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"box\"><strong>Warum?<\/strong><br \/>Ein deutliches Symptom schlecht wandelbaren Codes sind tiefe Hierarchien funktionaler Abh\u00e4ngigkeit. Sie reduzieren die Verst\u00e4ndlichkeit und erschweren automatisierte Tests wie Refactoring.<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:html --><\/p>\n<div class=\"core-points\">\n<table>\n<tbody>\n<tr>\n<th>Wandelbarkeit<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Korrektheit<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Produktionseffizienz<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Kontinuierliche Verbesserung<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Single Developer<\/th>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Indem in Methoden verhaltenserzeugende Anweisungen (Logik) gemischt mit Aufrufen anderer Methoden derselben Codebasis steht, ist nicht mehr klar erkennbar, wie Gesamtverhalten\u00a0entsteht; die Anweisungen sind ja verschmiert\u00a0\u00fcber eine u.U. sehr tiefe Hierarchie. Zudem tendieren Methoden mit solcher Mischung dazu, unbegrenzt zu wachsen.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Dem stellt sich das IOSP mit einer klaren Trennung entgegen:<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:list --><\/p>\n<ul>\n<li>Entweder enth\u00e4lt eine Methode nur Logik, d.h. Transformationen, Kontrollstrukturen oder I\/O- bzw. allgemeiner: API-Aufrufe. Dann wird sie\u00a0<em>Operation<\/em> genannt.<\/li>\n<li>Oder eine Methode enth\u00e4lt keinerlei Logik, sondern nur Aufrufe von anderen Methoden derselben Codebasis. Dann wird sie\u00a0<em>Integration<\/em> genannt.<\/li>\n<\/ul>\n<p><!-- \/wp:list --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Diese strikte Unterscheidung f\u00fchrt zu mehrerlei positiven Effekten:<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:list {\"ordered\":true} --><\/p>\n<ol>\n<li>Methoden tendieren dazu, sehr kurz zu bleiben. Denn mehr als 10, 20 oder 30 Zeilen reine Logik oder ausschlie\u00dflich Methodenaufrufe &#8222;f\u00fchlen sich nicht gut an&#8220;. Da eine Mischung nicht erlaubt ist, werden weitere kleine Methoden extrahiert.<\/li>\n<li>Kurze Methoden, die nur Logik enthalten, sind leicht zu testen, da sie keine Abh\u00e4ngigkeiten haben.<\/li>\n<li>Kurze Methoden, die nur Logik enthalten, sind vergleichsweise leicht zu verstehen. Der Methodenname kann wirklich bedeutungsstiftend wirken.<\/li>\n<li>Kurze Methoden, die ausschlie\u00dflich integrieren, sind sehr gut zu verstehen und beschreiben &#8222;auf einen Blick&#8220;, was geschieht.<\/li>\n<li>Die Korrektheit von Integrationen l\u00e4sst sich sehr leicht durch Augenscheinnahme pr\u00fcfen. Es ist lediglich festzustellen, ob Verarbeitungsschritte grunds\u00e4tzlich in der korrekten Reihenfolge angeordnet sind. Den Rest \u00fcbernimmt der Compiler \u2013 bzw. die Testabdeckung der Operationen.<\/li>\n<li>Integrationen lassen sich leicht durch &#8222;Zwischenschieben&#8220; weiterer Methoden erweitern, um neue Anforderungen zu erf\u00fcllen. Die Verst\u00e4ndlichkeit bleibt dabei erhalten.<\/li>\n<\/ol>\n<p><!-- \/wp:list --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Das IOSP l\u00e4sst sich &#8222;aus dem Stand&#8220; von jedem Entwickler guten Willens anwenden. Seine Einhaltung ist durch jedermann leicht zu \u00fcberpr\u00fcfen. Integrationen und Operationen unterscheiden sich in der Form deutlich. Weitere Details, insbesondere zur Abgrenzung zum <a href=\"https:\/\/clean-code-developer.de\/die-grade\/gelber-grad\/#Dependency_Inversion_Principle_DIP\">Dependency Inversion Principle<\/a> (DIP), <a href=\"https:\/\/ccd-akademie.de\/dip-oder-iosp\/\">findest du bspw. hier<\/a>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-aa8020e elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"aa8020e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4efe376 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4efe376\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-10ba941\" data-id=\"10ba941\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c3bd3b6 elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"c3bd3b6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<i aria-hidden=\"true\" class=\"icon icon-Praktik\"><\/i>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-cc450c0\" data-id=\"cc450c0\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-66b4cf2 elementor-widget elementor-widget-heading\" data-id=\"66b4cf2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Praktiken<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1ea73d8 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1ea73d8\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8fbd2df\" data-id=\"8fbd2df\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e9935a1 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"e9935a1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6b6d6b6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6b6d6b6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-9a17cab\" data-id=\"9a17cab\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-253f723 elementor-widget elementor-widget-image\" data-id=\"253f723\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/clean-code-developer.de\/wp-content\/uploads\/elementor\/thumbs\/icon_4_boy-scout-rule-qvokkz0uvygikw8ii7lr6umt1hgr8ltrtbyrso7ips.png\" title=\"Boy Scout Rule\" alt=\"Boy Scout Rule\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-59307bf\" data-id=\"59307bf\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ccb1349 elementor-widget elementor-widget-heading\" data-id=\"ccb1349\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Boy Scout Rule<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-07fb1cd elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"07fb1cd\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-339ec0d\" data-id=\"339ec0d\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d62fd95 elementor-widget elementor-widget-text-editor\" data-id=\"d62fd95\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"box\"><strong>Warum?<\/strong><br \/>Jede Besch\u00e4ftigung mit einem Gegenstand macht ihn zumindest ein klein wenig besser. Ganz ohne b\u00fcrokratische Planung. Fundament und Graswurzelansatz f\u00fcr mehr Qualit\u00e4t.<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:html --><\/p>\n<div class=\"core-points\">\n<table>\n<tbody>\n<tr>\n<th>Wandelbarkeit<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Korrektheit<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Produktionseffizienz<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Kontinuierliche Verbesserung<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Single Developer<\/th>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Das Clean Code Developer Wertesystem l\u00e4sst sich nicht mit einem Mal etablieren. Daf\u00fcr braucht es Zeit. Vor allem, da ein Clean Code Developer selten auf einer gr\u00fcnen Wiese und auch noch allein arbeitet, ist es schwer, die Prinzipien auf eine gesamte Codebasis anzuwenden. Wir glauben daher, dass es wichtig ist, sich nicht zu hohe Ziele zu setzen. Viel realistischer und motivierender ist es, nur kleine Fortschritte anzustreben \u2013 daf\u00fcr aber kontinuierliche.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Zum Fundament des Clean Code Development geh\u00f6rt deshalb f\u00fcr uns die Pfadfinderregel. Sie findet sich auch in <a title=\"Clean Code\" href=\"http:\/\/www.amazon.de\/Clean-Code-Handbook-Software-Craftsmanship\/dp\/0132350882\" target=\"_blank\" rel=\"noopener noreferrer\">Clean Code<\/a> und lautet: <i>Hinterlasse einen Ort immer in einem besseren Zustand als du ihn vorgefunden hast.<\/i><\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Auf die Softwareentwicklung angewandt bedeutet das: Clean Code Developer hinterlassen Code immer in einem &#8222;besseren Zustand&#8220; als sie ihn vorgefunden haben. Nach getaner Arbeit stimmt der Code also mit dem Clean Code Development Wertesystem mehr \u00fcberein als vorher.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Was ein Clean Code Developer an ihm daf\u00fcr getan hat, ist situations-\/codeabh\u00e4ngig &#8211; und wird nat\u00fcrlich auch durch den Grad bestimmt, an dem er arbeitet. Im roten Grad achtet ein Clean Code Developer z.B. darauf, dass Code, der noch nicht im Repository der Versionsverwaltung war, nun auch dort abgelegt ist. Und er achtet darauf, dass Wiederholungen jeder Art \u2013 also Verletzungen des DRY-Prinzips \u2013 &#8222;ausgeb\u00fcgelt&#8220; werden.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Wo ein Clean Code Developer Suboptimalit\u00e4ten im Sinne des CCD-Wertesystems feststellt, bem\u00fcht er sich also stetig darum, sie zu verbessern. In kleinen Schritten. Und nat\u00fcrlich bem\u00fcht er sich, Suboptimalit\u00e4ten von vornherein zu vermeiden. Wie gesagt: immer auf der Stufe seiner Entwicklung.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Diese Maxime steht am Anfang der Entwicklung des Clean Code Developers eingedenk der <a title=\"Broken Windows Theorie\" href=\"http:\/\/de.wikipedia.org\/wiki\/Broken-Windows-Theorie\" target=\"_blank\" rel=\"noopener noreferrer\">Broken Windows Theorie<\/a>. Nach ihr beginnt der Verfall von Qualit\u00e4t im allgemeinen Sinn mit Kleinigkeiten, die nur lange genug unbeachtet bleiben.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Wenn Clean Code Developer jedoch nach der Pfadfinderregel arbeiten, kommt es gar nicht erst zu &#8222;Broken Windows&#8220; \u2013 vorhandene werden eines nach dem anderen repariert. &#8222;Risse und Unebenheiten&#8220; im Code schlie\u00dft die Pfadfinderregel konsequent auf der Basis des CCD-Wertesystems, sodass sich keine weiteren &#8222;Ablagerungen&#8220; ansammeln k\u00f6nnen. Sie wirkt damit proaktiv einer Code-Erosion entgegen. Das halten wir f\u00fcr so fundamental, dass wir sie in den roten Grad aufgenommen haben.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1ec8fe8 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1ec8fe8\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6b1f912\" data-id=\"6b1f912\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1a81317 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"1a81317\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-23d0e9a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"23d0e9a\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-d769727\" data-id=\"d769727\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-13c44f7 elementor-widget elementor-widget-image\" data-id=\"13c44f7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/clean-code-developer.de\/wp-content\/uploads\/elementor\/thumbs\/icon_34_root-cause-analysis-qvokpbzwlafefrwi1lgg990s8tz1y24y2wwuxvqruo.png\" title=\"Root Cause Analysis\" alt=\"Root Cause Analysis\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-f30d41f\" data-id=\"f30d41f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-99e006a elementor-widget elementor-widget-heading\" data-id=\"99e006a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Root Cause Analysis<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-eca6d10 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"eca6d10\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c6a4808\" data-id=\"c6a4808\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-622b3bc elementor-widget elementor-widget-text-editor\" data-id=\"622b3bc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"box\"><strong>Warum?<\/strong><br \/>Symptome behandeln bringt vielleicht schnell eine Linderung \u2013 langfristig kostet es aber mehr Aufwand. Wer stattdessen unter die Oberfl\u00e4che von Problemen schaut, arbeitet am Ende effizienter.<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:html --><\/p>\n<div class=\"core-points\">\n<table>\n<tbody>\n<tr>\n<th>Wandelbarkeit<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Korrektheit<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Produktionseffizienz<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Kontinuierliche Verbesserung<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Single Developer<\/th>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Regel vom ersten Tag als Clean Code Developer an sollte sein, bei Problemen immer intensiv nach der wahren Wurzel des \u00dcbels zu suchen. Clean Code Developer geben sich nicht mit einer Symptomkur zufrieden. Beispiel: Die Sortierung von Daten im Speicher ist zu langsam. Eine oberfl\u00e4chliche Kur w\u00fcrde jetzt daran gehen, einzelne Anweisungen oder Anweisungsbl\u00f6cke zu beschleunigen. Vielleicht wird der Einsatz von unsafe Code probiert, vielleicht eine Parallelisierung. Eine n\u00e4here Problemanalyse jedoch h\u00e4tte ergeben, dass ein suboptimaler Algorithmus die Wurzel des \u00dcbels ist. Schwer verst\u00e4ndliche Optimierungen auf niedriger Abstraktionsebene k\u00f6nnen also vermieden werden. Ein besserer Algorithmus ist die saubere L\u00f6sung.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Wurzelproblemanalyse ist also ein Dienst an der Verst\u00e4ndlichkeit und am Aufwand. Denn bei Kenntnis des Wurzelproblems ist die Bereinigung meist weniger aufw\u00e4ndig als eine Symptomkur. St\u00f6\u00dft der Clean Code Developer auf ein Problem, so h\u00e4lt er also als erstes inne, um sich eine Chance zu geben, hinter die Symptome zu schauen.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Die Root Cause Analysis ist auch unter dem Begriff Five Why&#8217;s bekannt. Dieser Begriff stammt aus der Terminologie des Toyota Produktions Systems (TPS). Die Grundidee: frage mindestens f\u00fcnf mal &#8222;Warum?&#8220;.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5d70478 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"5d70478\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1941f23 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1941f23\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-67d5bd2\" data-id=\"67d5bd2\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d968bae elementor-widget elementor-widget-image\" data-id=\"d968bae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/clean-code-developer.de\/wp-content\/uploads\/elementor\/thumbs\/icon_44_version-control-system-qvoks99tuqfik3nkyuyo0igerzk5w5qvtdz8oveohs.png\" title=\"Version Control System\" alt=\"Version Control System\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-cad1ecb\" data-id=\"cad1ecb\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3c938ca elementor-widget elementor-widget-heading\" data-id=\"3c938ca\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Version Control System<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-82a1451 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"82a1451\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8305f41\" data-id=\"8305f41\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4e2682b elementor-widget elementor-widget-text-editor\" data-id=\"4e2682b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"box\"><strong>Warum?<\/strong><br \/>Angst vor Besch\u00e4digung eines &#8222;running system&#8220; l\u00e4hmt die Softwareentwicklung. Mit einer Versionsverwaltung ist solche Angst unbegr\u00fcndet. Die Entwicklung kann schnell und mutig voranschreiten.<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:html --><\/p>\n<div class=\"core-points\">\n<table>\n<tbody>\n<tr>\n<th>Wandelbarkeit<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Korrektheit<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Produktionseffizienz<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Kontinuierliche Verbesserung<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Team<\/th>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Unabdingbare Voraussetzung f\u00fcr jeden Clean Code Developer ist es, seinen Code unter den Schutz eines Versionskontrollsystems zu stellen. Ob das Mercurial, Git, Subversion, VSS, TFS oder Vault ist, spielt dabei keine Rolle. Wir meinen nur, dass heute keine Arbeit an Code mehr durchgef\u00fchrt werden sollte, ohne ihn in einem Versionskontrollsystem zu pflegen. Der Grund daf\u00fcr ist ganz simpel: Ein Versionskontrollsystem befreit von Angst. Und Angstfreiheit ist n\u00f6tig, um mutig die Prinzipien und Praktiken des CCD-Wertesystems umzusetzen.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Ein Versionskontrollsystem nimmt die Angst, etwas falsch und damit kaputt zu machen. Wenn Code in ihm gehalten wird, kann jeder CCD den Code nach Belieben ver\u00e4ndern, ohne bef\u00fcrchten zu m\u00fcssen, einen erreichten Stand zu zerst\u00f6ren. Nichts geht verloren. Das Versionskontrollsystem ist wie eine Zeitmaschine f\u00fcr Code.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Damit ist ein Versionskontrollsystem die allerbeste Grundlage f\u00fcr alles Lernen. Denn Lernen bedeutet Fehler machen. Mit einem Versionskontrollsystem als Sicherheitsnetz k\u00f6nnen wir uns alle Fehler erlauben. Deshalb: Erste Voraussetzung f\u00fcr den Einstieg ins Clean Code Development ist der st\u00e4ndige Gebrauch eines Versionskontrollsystems.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Wo das im Projekt nicht m\u00f6glich ist, sehen wir das Fundament f\u00fcr Clean Code Development abwesend. Wir w\u00fcrden auch nicht verstehen, warum der Einsatz eines Versionskontrollwerkzeuges nicht m\u00f6glich sein sollte. Kosten m\u00fcssen daf\u00fcr nicht anfallen und der Einarbeitungsaufwand in die einfachsten Funktionen ist minimal. CCD schreibt ja keine bestimmte Nutzung eines Versionskontrollsystems vor, sondern nur, dass eines benutzt werden muss.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Siehe auch unter <a title=\"Tools\" href=\"http:\/\/clean-code-developer.de\/weitere-infos\/werkzeuge\/\">Tools<\/a>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a12f44e elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"a12f44e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2b2226a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2b2226a\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-42f6e38\" data-id=\"42f6e38\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0039d59 elementor-widget elementor-widget-image\" data-id=\"0039d59\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/clean-code-developer.de\/wp-content\/uploads\/elementor\/thumbs\/icon_37_simple-refactorings-qvokvhtte6v2jqya29celp1kfrloemlllevg76lv28.png\" title=\"Simple Refactorings\" alt=\"Simple Refactorings Warum? Code verbessern ist leichter, wenn man typische Verbesserungshandgriffe kennt. Ihre Anwendungsszenarien machen sensibel f\u00fcr Schwachpunkte im eigenen Code. Als anerkannte Muster st\u00e4rken sie den Mut, sie anzuwenden. Wandelbarkeit \u00a0\u00a0 Korrektheit \u00a0\u00a0 Produktionseffizienz \u00a0\u00a0 Kontinuierliche Verbesserung \u00a0\u00a0 Single Developer Um Code immer ein wenig besser zu hinterlassen, als man ihn vorgefunden hat, sind mehr oder weniger gro\u00dfe Eingriffe n\u00f6tig. Die kann ein Clean Code Developer dank des Versionskontrollsystems angstfrei vornehmen. Doch wie macht er sich die Arbeit m\u00f6glichst einfach? Das Schl\u00fcsselwort lautet &quot;Refaktorisierung&quot;. Martin Fowler hat das Refaktorisieren\/Refactoring in seinem gleichnamigen Buch als grundlegende Technik zur Erh\u00f6hung der Codequalit\u00e4t beschrieben. Er definiert darin eine Anzahl von Codever\u00e4nderungsmustern, um &quot;code smells&quot;, d.h. suboptimale Strukturen oder allgemeiner Missachtungen von Prinzipien, zu bereinigen. F\u00fcr den roten Grad ist darin vor allem die Refaktorisierung Methode extrahieren relevant, um dem DRY-Prinzip zu gen\u00fcgen. Die wenden Clean Code Developer an, um mehrfach vorkommenden Code in eine Methode zu extrahieren, die statt seiner an den Wiederholungsorten aufgerufen wird. Als zweite Refaktorisierung sollte bei der Arbeit am roten Grad das Umbenennen wo n\u00f6tig eingesetzt werden. Sie passt zur Pfadfinderregel, denn eine oft anzutreffende &quot;Unsauberkeit&quot; im Quellcode sind kryptische Namen. Refaktorisierungen k\u00f6nnen von Hand angewandt werden, doch es gibt auch Werkzeugunterst\u00fctzung. Moderne IDEs wie Visual Studio bieten einige Refactoringmuster, weitere Tools listet unsere Werkzeugliste. &quot;Refactoring&quot; wie &quot;Clean Code&quot; geh\u00f6ren zur Pflichtlekt\u00fcre jedes Clean Code Developers ab dem roten Grad. F\u00fcr weitere Informationen siehe auch unter refactoring-legacy-code.net.\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-5f8dad4\" data-id=\"5f8dad4\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1198ea4 elementor-widget elementor-widget-heading\" data-id=\"1198ea4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Simple Refactorings<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a740a12 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a740a12\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b2677eb\" data-id=\"b2677eb\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-02bddf7 elementor-widget elementor-widget-text-editor\" data-id=\"02bddf7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:html --><\/p>\n<div class=\"box\"><strong>Warum?<\/strong><br \/>Code verbessern ist leichter, wenn man typische Verbesserungshandgriffe kennt. Ihre Anwendungsszenarien machen sensibel f\u00fcr Schwachpunkte im eigenen Code. Als anerkannte Muster st\u00e4rken sie den Mut, sie anzuwenden.<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:html --><\/p>\n<div class=\"core-points\">\n<table>\n<tbody>\n<tr>\n<th>Wandelbarkeit<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Korrektheit<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Produktionseffizienz<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Kontinuierliche Verbesserung<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Single Developer<\/th>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Um Code immer ein wenig besser zu hinterlassen, als man ihn vorgefunden hat, sind mehr oder weniger gro\u00dfe Eingriffe n\u00f6tig. Die kann ein Clean Code Developer dank des Versionskontrollsystems angstfrei vornehmen. Doch wie macht er sich die Arbeit m\u00f6glichst einfach?<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Das Schl\u00fcsselwort lautet &#8222;Refaktorisierung&#8220;. <a title=\"Martin Fowler\" href=\"http:\/\/martinfowler.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Martin Fowler<\/a> hat das <a title=\"Refaktorisieren\/Refactoring\" href=\"http:\/\/www.amazon.de\/Refactoring-Studentenausgabe-vorhandener-verbessern-Programmers\/dp\/3827322782\" target=\"_blank\" rel=\"noopener noreferrer\">Refaktorisieren\/Refactoring<\/a> in seinem gleichnamigen Buch als grundlegende Technik zur Erh\u00f6hung der Codequalit\u00e4t beschrieben. Er definiert darin eine Anzahl von Codever\u00e4nderungsmustern, um &#8222;code smells&#8220;, d.h. suboptimale Strukturen oder allgemeiner Missachtungen von Prinzipien, zu bereinigen.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>F\u00fcr den roten Grad ist darin vor allem die Refaktorisierung <a title=\"Methode extrahieren\" href=\"http:\/\/martinfowler.com\/refactoring\/catalog\/extractMethod.html\" target=\"_blank\" rel=\"noopener noreferrer\">Methode extrahieren<\/a> relevant, um dem DRY-Prinzip zu gen\u00fcgen. Die wenden Clean Code Developer an, um mehrfach vorkommenden Code in eine Methode zu extrahieren, die statt seiner an den Wiederholungsorten aufgerufen wird.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Als zweite Refaktorisierung sollte bei der Arbeit am roten Grad das <a title=\"Umbenennen\" href=\"http:\/\/martinfowler.com\/refactoring\/catalog\/renameMethod.html\" target=\"_blank\" rel=\"noopener noreferrer\">Umbenennen<\/a> wo n\u00f6tig eingesetzt werden. Sie passt zur Pfadfinderregel, denn eine oft anzutreffende &#8222;Unsauberkeit&#8220; im Quellcode sind kryptische Namen.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Refaktorisierungen k\u00f6nnen von Hand angewandt werden, doch es gibt auch Werkzeugunterst\u00fctzung. Moderne IDEs wie Visual Studio bieten einige Refactoringmuster, weitere Tools listet unsere <a title=\"Tools\" href=\"http:\/\/clean-code-developer.de\/weitere-infos\/werkzeuge\/\">Werkzeugliste<\/a>.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>&#8222;Refactoring&#8220; wie &#8222;Clean Code&#8220; geh\u00f6ren zur <a title=\"Literaturliste\" href=\"http:\/\/clean-code-developer.de\/weitere-infos\/literatur\/\">Pflichtlekt\u00fcre<\/a> jedes Clean Code Developers ab dem roten Grad.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>F\u00fcr weitere Informationen siehe auch unter <a title=\"refactoring-legacy-code.net\" href=\"http:\/\/refactoring-legacy-code.net\/category\/einfache-refactorings\/\">refactoring-legacy-code.net<\/a>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cae6610 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"cae6610\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7b6196f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7b6196f\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-fe57049\" data-id=\"fe57049\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a645a11 elementor-widget elementor-widget-image\" data-id=\"a645a11\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/clean-code-developer.de\/wp-content\/uploads\/elementor\/thumbs\/icon_10_daily-reflection-qvokxfdvfxiaew58s3esq7hoea2u889qiz5dpnqq9s.png\" title=\"Daily Reflection\" alt=\"Daily Reflection\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-2bf43f2\" data-id=\"2bf43f2\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ff78aef elementor-widget elementor-widget-heading\" data-id=\"ff78aef\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Daily Reflection<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6ece68cc elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6ece68cc\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-69b3578a\" data-id=\"69b3578a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1b76f3fc elementor-widget elementor-widget-text-editor\" data-id=\"1b76f3fc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><!-- wp:heading {\"level\":1} --><!-- \/wp:heading --><\/p>\n<p><!-- wp:heading {\"level\":3} --><!-- \/wp:heading --><\/p>\n<p><!-- wp:html --><!-- \/wp:html --><\/p>\n<p><!-- wp:paragraph --><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:heading {\"level\":3} --><!-- \/wp:heading --><\/p>\n<p><!-- wp:html --><\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:heading {\"level\":3} --><\/p>\n<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:html --><\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:heading {\"level\":3} --><\/p>\n<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:html --><\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:heading {\"level\":3} --><\/p>\n<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:html --><\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:heading --><\/p>\n<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:heading {\"level\":3} --><\/p>\n<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:html --><\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:heading {\"level\":3} --><\/p>\n<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:html --><\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:heading {\"level\":3} --><\/p>\n<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:html --><\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:heading {\"level\":3} --><\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:heading {\"level\":3} --><\/p>\n<p><!-- \/wp:heading --><\/p>\n<p><!-- wp:html --><\/p>\n<div class=\"box\"><strong>Warum?<\/strong><br \/>Keine Verbesserung, kein Fortschritt, kein Lernen ohne Reflexion. Aber nur, wenn Reflexion auch eingeplant wird, findet sie unter dem Druck des Tagesgesch\u00e4ftes auch statt.<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:html --><\/p>\n<div class=\"core-points\">\n<table>\n<tbody>\n<tr>\n<th>Wandelbarkeit<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Korrektheit<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Produktionseffizienz<\/th>\n<td><i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Kontinuierliche Verbesserung<\/th>\n<td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td>\n<\/tr>\n<tr>\n<th>Single Developer<\/th>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><!-- \/wp:html --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Im Zentrum von CCD steht die pers\u00f6nliche Entwicklung. Es geht also um Ver\u00e4nderung: Mit jedem Tag soll sich das CCD-Wertesystem ein klein wenig mehr im Projektalltag des Clean Code Developers manifestieren. Das ist die Pfadfinderregel des Clean Code Developers auf sich selbst angewandt.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>So ein Ver\u00e4nderungsweg geht sich allerdings gerade allein nicht leicht. Wie also auf Kurs bleiben? Wie Fortschritt messen?<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Ohne ein &#8222;Kontrollsystem&#8220; etablieren zu wollen, glauben wir, dass dazu zweierlei geh\u00f6rt:<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:list {\"ordered\":true} --><\/p>\n<ol>\n<li>Kleinschrittige Planung<\/li>\n<li>Reflexion nach jedem Schritt<\/li>\n<\/ol>\n<p><!-- \/wp:list --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Unabh\u00e4ngig von Vorgaben durch eine Projektleitung sollten Clean Code Developer ihre Arbeit so einteilen, dass sie aus Aufgaben besteht, die an einem Arbeitstag zu bew\u00e4ltigen sind. Nur so kann am Abend jedes Tages eine Bilanz gezogen werden. Das halten wir f\u00fcr wichtig, um jeden Tag die Arbeit nicht mit in den Feierabend zu tragen. Da hat sie nichts zu suchen; der dient der Entspannung.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Durch solche kleinen Planungsschritte wird der Arbeitsalltag allerdings nicht nur befriedigender, weil sich jeden Tag \u00fcber Erfolg oder Misserfolg entscheiden l\u00e4sst. Die schiere M\u00f6glichkeit der Entscheidung am Abend \u2013 <i>Habe ich alle meine Aufgaben erledigt? Wie habe ich meine Aufgaben erledigt?<\/i> \u2013 erlaubt auch die Reflexion \u00fcber die Einhaltung des Clean Code Developer Wertesystems.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Um sich konsequent zu einem Clean Code Developer zu entwickeln, soll der Entwickler sich auf jedem Grad nach jedem Arbeitstag dar\u00fcber Rechenschaft ablegen, ob er alle f\u00fcr ihn nach Grad relevanten Aspekte des Wertesystems ber\u00fccksichtigt hat. F\u00fcr den roten Grad bedeutet das z.B. Fragen wie: Verwalte ich wirklich alle Codefragmente im Versionskontrollsystem? Habe ich das DRY-Prinzip konsequent angewandt? Habe ich ganz allgemein Code in einem besseren Zustand hinterlassen als vorgefunden?<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Wenn er auf eine dieser Fragen nur z\u00f6gerlich mit Ja oder gar mit einem Nein antworten muss, dann ist das nat\u00fcrlich kein Beinbruch. Bei allem Bem\u00fchen klappt es eben nicht immer, dass man den guten Willen auch in die Tat umsetzen kann.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Dennoch oder gerade deshalb ist dann allerdings Folgendes zu tun:<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:list --><\/p>\n<ul>\n<li>Entweder bessert der Clean Code Developer jetzt solange nach, bis er in Bezug auf seines Tages Arbeit keine Prinzipienverletzung mehr wahrnimmt.<\/li>\n<li>Oder er nimmt die erkannten Prinzipienverletzungen f\u00fcr den n\u00e4chsten Tag auf seinen Aufgabenzettel.<\/li>\n<\/ul>\n<p><!-- \/wp:list --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Eine Hilfe bei der Reflexion kann das Clean Code Developer <a title=\"Das Clean Code Developer Armband\" href=\"http:\/\/clean-code-developer.de\/die-initiative\/armbaender\/\">Armband<\/a> sein. Uns ist bewusst, dass es nicht jedermanns Sache ist, ein buntes Silikonarmband zu tragen. Wer damit kein Problem hat, kann das Armband im Rahmen der pers\u00f6nlichen Reflexion nutzen. Kann oder will der Clean Code Developer die Prinzipienverletzung nicht bereinigen oder auf seinen Arbeitszettel nehmen, sollte er das Armband, das er tr\u00e4gt, vom einen auf den anderen Arm wechseln. So macht er deutlich, dass er eine Differenz zwischen dem Soll seines Grades und dem Geschafften anerkennt. Das ist nicht als Niederlage misszuverstehen oder gar als &#8222;Bu\u00dfe&#8220;. Es geht vielmehr um eine haptische Unterst\u00fctzung des Lernvorgangs.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><!-- wp:paragraph --><\/p>\n<p>Wenn ein Clean Code Developer 21 Tage lang nach getaner Arbeit das Armband nicht mehr wechseln musste, kann er zur Arbeit am n\u00e4chsten Grad \u00fcbergehen. F\u00fcr den roten Grad ist das der <a title=\"Oranger Grad\" href=\"http:\/\/clean-code-developer.de\/die-grade\/orangener-grad\/\">orange Grad<\/a>.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Mit dem roten Grad beginnt der Weg des Clean Code Developers. Ab hier gilt es, einen ersten Teil der Clean Code Developer Bausteine in die t\u00e4gliche Arbeit einzubringen und immer wieder zu \u00fcben. Der rote Grad ist so gestaltet, dass jeder Entwickler hier mit minimalem Aufwand einsteigen kann. Ver\u00e4nderungen an den Projektverh\u00e4ltnissen sollten kaum n\u00f6tig [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":17,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-21","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/clean-code-developer.de\/es\/wp-json\/wp\/v2\/pages\/21","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/clean-code-developer.de\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/clean-code-developer.de\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/clean-code-developer.de\/es\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/clean-code-developer.de\/es\/wp-json\/wp\/v2\/comments?post=21"}],"version-history":[{"count":5,"href":"https:\/\/clean-code-developer.de\/es\/wp-json\/wp\/v2\/pages\/21\/revisions"}],"predecessor-version":[{"id":953,"href":"https:\/\/clean-code-developer.de\/es\/wp-json\/wp\/v2\/pages\/21\/revisions\/953"}],"up":[{"embeddable":true,"href":"https:\/\/clean-code-developer.de\/es\/wp-json\/wp\/v2\/pages\/17"}],"wp:attachment":[{"href":"https:\/\/clean-code-developer.de\/es\/wp-json\/wp\/v2\/media?parent=21"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}