{"id":33,"date":"2015-04-26T14:00:25","date_gmt":"2015-04-26T12:00:25","guid":{"rendered":"http:\/\/ccd.ralfw.domainfactory-kunde.de\/?page_id=33"},"modified":"2024-10-18T02:05:46","modified_gmt":"2024-10-18T00:05:46","slug":"grado-naranja","status":"publish","type":"page","link":"https:\/\/clean-code-developer.de\/es\/die-grade\/orangener-grad\/","title":{"rendered":"Grado naranja"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"33\" class=\"elementor elementor-33\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-53b7e94 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"53b7e94\" 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-ff68cf5\" data-id=\"ff68cf5\" 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-72b8bad elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents\" data-id=\"72b8bad\" 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;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__72b8bad\" 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__72b8bad\" 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__72b8bad\" 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-d66019f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d66019f\" 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-a53168a\" data-id=\"a53168a\" 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-47790b8 elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"47790b8\" 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-9fff7a0\" data-id=\"9fff7a0\" 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-8317371 elementor-widget elementor-widget-heading\" data-id=\"8317371\" 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-ae40f64 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ae40f64\" 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-ca5b510\" data-id=\"ca5b510\" 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-7125005 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"7125005\" 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-6f3101c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6f3101c\" 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-6093894\" data-id=\"6093894\" 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-faeb9e2 elementor-widget elementor-widget-image\" data-id=\"faeb9e2\" 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_38_single-level-of-abstraction-qvpqcuwxfh5y0zrav9vbicmcct04j25dwvjnk6dri8.png\" title=\"Single Level of Abstraction\" alt=\"Single Level of Abstraction\" 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-d12901e\" data-id=\"d12901e\" 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-6cad1a4 elementor-widget elementor-widget-heading\" data-id=\"6cad1a4\" 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\">Single Level of Abstraction<\/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-3ff6b2a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3ff6b2a\" 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-9e3d8fa\" data-id=\"9e3d8fa\" 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-251c105 elementor-widget elementor-widget-text-editor\" data-id=\"251c105\" 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 \/>Die Einhaltung eines Abstraktionsniveaus f\u00f6rdert die Lesbarkeit.<\/div><div class=\"core-points\"><table><tbody><tr><th>Wandelbarkeit<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Korrektheit<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Produktionseffizienz<\/th><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><\/tr><tr><th>Kontinuierliche Verbesserung<\/th><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><\/tr><tr><th>Single Developer<\/th><\/tr><\/tbody><\/table><\/div><p>Eine Codezeile kann auf verschiedenen Abstraktionsniveaus liegen. Die Zuweisung eines Wertes an eine Variable liegt auf einem niedrigeren Abstraktionsniveau als etwa ein Methodenaufruf. Schlie\u00dflich kann sich hinter dem Methodenaufruf weit mehr Logik befinden als in der Zuweisung einer Variable. Selbst Methodenaufrufe k\u00f6nnen auf unterschiedlichen Abstraktionsniveaus stehen. Der Aufruf einer Methode aus einem Framework steht auf einem anderen Niveau, als der Aufruf einer Methode der Anwendung.<\/p><p>Damit Code gut zu lesen und zu verstehen ist, sollte in einer Methode nur ein Abstraktionsniveau verwendet werden. Andernfalls f\u00e4llt es dem Leser schwer, Essentielles von Details zu unterscheiden. Wenn Bitpfriemeleien erforderlich sind, sollten diese nicht mit dem Aufruf von Methoden vermischt werden.<\/p><p>Hilfreich als Analogie ist der Blick auf Artikel in der Tageszeitung: dort steht zu oberst das Allerwichtigste, die \u00dcberschrift. Aus ihr sollte in groben Z\u00fcgen hervorgehen, wovon der Artikel handelt. Im ersten Satz des Artikels wird dies auf einem hohen Abstraktionsniveau beschrieben. Je weiter man im Artikel fortschreitet, desto mehr Details tauchen auf. So k\u00f6nnen wir auch unseren Code strukturieren. Der Name der Klasse ist die \u00dcberschrift. Dann folgen die \u00f6ffentlichen Methoden auf hohem Abstraktionsniveau. Diese rufen m\u00f6glicherweise Methoden auf niedrigerem Niveau auf, bis zuletzt die &#8222;Bitpfriemelmethoden&#8220; \u00fcbrig bleiben. Durch diese Einteilung kann ich als Leser der Klasse entscheiden, welchen Detaillierungsgrad ich mir ansehen m\u00f6chte. Interessiert mich nur grob, wie die Klasse arbeitet, brauche ich mir nur die \u00f6ffentlichen Methoden anzuschauen. In ihnen wird die Funktionalit\u00e4t auf einem hohen Abstraktionsniveau gel\u00f6st. Interessieren mich weitere Details, kann ich tiefer einsteigen und mir die privaten Methoden ansehen.<\/p><p>Literaturquellen: Clean Code, Seite 36ff.<\/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-895acaa elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"895acaa\" 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-10e5c48 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"10e5c48\" 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-c5e2e81\" data-id=\"c5e2e81\" 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-63ad907 elementor-widget elementor-widget-image\" data-id=\"63ad907\" 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_39_single-responsibility-principle-qvpqg93y3xt7yatt1qotihs9kw9ubpmhpocry5cl1c.png\" title=\"Single Responsibility Principle (SRP)\" alt=\"Single Responsibility Principle (SRP)\" 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-ce37424\" data-id=\"ce37424\" 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-712d28b elementor-widget elementor-widget-heading\" data-id=\"712d28b\" 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\">Single Responsibility Principle (SRP)<\/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-07eac00 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"07eac00\" 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-769ae2e\" data-id=\"769ae2e\" 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-83e7dd4 elementor-widget elementor-widget-text-editor\" data-id=\"83e7dd4\" 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 \/>Fokus erleichtert das Verst\u00e4ndnis. Eine Klasse mit genau einer Aufgabe ist verst\u00e4ndlicher als ein Gemischtwarenladen.<\/div><div class=\"core-points\"><table><tbody><tr><th>Wandelbarkeit<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Korrektheit<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Produktionseffizienz<\/th><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><\/tr><tr><th>Kontinuierliche Verbesserung<\/th><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><\/tr><tr><th>Single Developer<\/th><\/tr><\/tbody><\/table><\/div><p>Das Single Responsibility Principle (<a title=\"SRP\" href=\"http:\/\/web.archive.org\/web\/20160716150726\/http:\/\/objectmentor.com\/resources\/articles\/srp.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">SRP<\/a>) ist eines der <a title=\"SOLID\" href=\"https:\/\/clean-code-developer.de\/weitere-infos\/solid\/\">SOLID<\/a> Prinzipien. Es lautet: Eine Klasse sollte nur <b>eine<\/b> Verantwortlichkeit haben.<\/p><p>Hintergrund des Single Responsibility Principle ist die \u00dcberlegung, dass \u00c4nderungen oder Erweiterungen der Funktionalit\u00e4t einer Anwendung sich auf wenige Klassen beschr\u00e4nken sollen. Je mehr Klassen angepasst werden m\u00fcssen, desto gr\u00f6\u00dfer ist das Risiko, dass sich durch die erforderlichen \u00c4nderungen Probleme an Stellen ergeben, die im Kern nichts mit der Erweiterung zu tun haben. Eine Verletzung des Single Responsibility Principle f\u00fchrt zu Kopplung und damit zu erh\u00f6hter Komplexit\u00e4t, es wird schwieriger den Code zu verstehen.<\/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-95ccb6e elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"95ccb6e\" 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-8f2b74e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8f2b74e\" 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-f82cec5\" data-id=\"f82cec5\" 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-ccd7899 elementor-widget elementor-widget-image\" data-id=\"ccd7899\" 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_35_separation-of-concerns-qvpqjvrihws2s3k0ut5yn2tc5gdv1n16jn19nlyv0g.png\" title=\"Separation of Concerns (SoC)\" alt=\"Separation of Concerns (SoC)\" 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-d6463a6\" data-id=\"d6463a6\" 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-3c95598 elementor-widget elementor-widget-heading\" data-id=\"3c95598\" 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\">Separation of Concerns (SoC)<\/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-e6d92f5 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e6d92f5\" 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-0e322a7\" data-id=\"0e322a7\" 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-0d3ecc0 elementor-widget elementor-widget-text-editor\" data-id=\"0d3ecc0\" 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 \/>Wenn eine Codeeinheit keine klare Aufgabe hat, ist es schwer sie zu verstehen, sie anzuwenden und sie ggf. zu korrigieren oder zu erweitern.<\/div><div class=\"core-points\"><table><tbody><tr><th>Wandelbarkeit<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Korrektheit<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Produktionseffizienz<\/th><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><\/tr><tr><th>Kontinuierliche Verbesserung<\/th><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><\/tr><tr><th>Team<\/th><\/tr><\/tbody><\/table><\/div><p>\u00dcbersetzt mit Trennung der Belange bedeutet dieses Prinzip, dass man nicht mehrere Belange in einer Klasse zusammenfassen soll. Was sind Belange? Belange sind &#8222;komplett verschiedene&#8220; Zwecke. Man sagt auch, Belange seien orthogonal zu einander und vor allem orthogonal zur Hauptfunktionalit\u00e4t einer Funktionseinheit. Beispiele f\u00fcr typische Belange sind: Tracing, Logging, Transaktionalit\u00e4t, Caching. Diese Belange sollen nach dem Prinzip der Separation of Concerns in spezialisierte Funktionseinheiten ausgelagert werden.<\/p><p>Das Separation of Concerns Prinzip h\u00e4ngt eng mit dem Single Responsibility Prinzip zusammen. Dabei sind Concerns eine \u00dcbermenge von Responsibilities. Jede Responsibility besteht im Idealfall aus genau einem Concern, n\u00e4mlich ihrer Kernfunktionalit\u00e4t. Oft sind in einer Responsibility jedoch mehrere Concerns vermischt. Da sich dies technisch meist nicht ganz vermeiden l\u00e4\u00dft, besagt das Prinzip nicht etwa, dass eine Responsibility nur aus einem Concern bestehen darf, sondern dass die Concerns getrennt sein sollten. Innerhalb einer Methode sollte beispielsweise klar erkennbar sein, dass es mehrere Concerns gibt. Ferner sollten die Concerns nicht irgendwie \u00fcber die Methode verstreut sein, sondern so gruppiert, dass klar ist, was zu einem Concern geh\u00f6rt.<\/p><p>Im Domain Driven Design versucht man beispielsweise die Business Domain von der Infrastruktur strikt zu trennen. So darf dort eine Klasse aus der Business Domain keinerlei Infrastruktur, etwa f\u00fcr Datenbankzugriffe, enthalten, sondern soll ausschlie\u00dflich die Gesch\u00e4ftslogik abbilden. Persistenz ist ein &#8222;Concern&#8220; der nichts mit der Business Logik zu tun hat. Separation of Concerns f\u00fchrt zu loser Kopplung und hoher Koh\u00e4sion. Die einzelnen Komponenten sind jeweils auf eine Aufgabe, einen Concern, fokussiert und dadurch leicht verst\u00e4ndlich. Alle Teile aus denen die Komponente besteht, sind auf diese eine Aufgabe ausgerichtet, dadurch h\u00e4ngen die Teile eng zusammen (hohe Koh\u00e4sion). Separation of Concerns f\u00fchrt dar\u00fcber hinaus auch zu gut testbaren Komponenten. Denn wenn der Zweck einer Codeeinheit fokussiert ist, muss weniger breit getestet werden. In Bezug auf die zu testende Codeeinheit sind weniger Testparameterkombinationen zu pr\u00fcfen. Soll die Trennung der Belange konsequent betrieben werden, muss die Objektorientierung um das Konzept der Aspektorientierten Programmierung (AOP) erweitert werden. Dadurch wird es m\u00f6glich, Aspekte wie etwa Transaktionalit\u00e4t, Tracing oder Caching vollst\u00e4ndig aus einer Methode herauszuziehen.<\/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-4364f11 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"4364f11\" 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-3c53069 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3c53069\" 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-14e4bd2\" data-id=\"14e4bd2\" 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-be74c93 elementor-widget elementor-widget-image\" data-id=\"be74c93\" 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_40_source-code-conventions-qvpqmjn1v0fboboraylwpemcqr9aurlswtkslu0pds.png\" title=\"Source Code Conventions\" alt=\"Source Code Conventions\" 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-c2b3bfc\" data-id=\"c2b3bfc\" 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-f56c407 elementor-widget elementor-widget-heading\" data-id=\"f56c407\" 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\">Source Code Conventions<\/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-8e91be4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8e91be4\" 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-23b377f\" data-id=\"23b377f\" 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-b63007b elementor-widget elementor-widget-text-editor\" data-id=\"b63007b\" 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 \/>Code wird h\u00e4ufiger gelesen als geschrieben. Daher sind Konventionen wichtig, die ein schnelles Lesen und Erfassen des Codes unterst\u00fctzen.<\/div><div class=\"core-points\"><table><tbody><tr><th>Wandelbarkeit<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Korrektheit<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Produktionseffizienz<\/th><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><\/tr><tr><th>Kontinuierliche Verbesserung<\/th><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><\/tr><tr><th>Team<\/th><\/tr><\/tbody><\/table><\/div><p>Wir betrachten die folgenden Aspekte als wichtig:<\/p><ul><li>Namensregeln<\/li><li>Richtig Kommentieren<\/li><\/ul><p>Damit wollen wir nicht zum Ausdruck bringen, dass andere Konventionen unwichtig sind, wir wollen nur mit diesen beiden beginnen, weil sie uns elementar erscheinen. Bei allen Code Konventionen ist uns n\u00e4mlich eines ganz wichtig: es geht weniger um die konkrete Ausgestaltung, sondern um konsequentes Einhalten der Konvention. Und es geht um das Bewusstsein, dass Konventionen notwendig sind.<\/p><h4>Namensregeln<\/h4><div class=\"box\"><strong>Warum?<\/strong><br \/>Ohne Namensregeln muss man sich wieder und wieder auf den Stil einzelner Entwickler einstimmen.<\/div><p>Namensregeln sollen den Leser des Codes dabei unterst\u00fctzen den Code zu verstehen. Da es z.B. hilfreich ist, Felder von lokalen Variablen zu unterscheiden, k\u00f6nnte dies durch eine Namensregel unterst\u00fctzt werden. Wie eine solche Konvention im Einzelfall aussieht ist Geschmacksache. Manche bevorzugen &#8222;this.xyz&#8220; andere &#8222;_xyz&#8220;. Welche Variante man w\u00e4hlt ist uns nicht wichtig. Uns kommt es darauf an, dass die Konvention konsequent eingehalten wird. Die Notwendigkeit einer Namensregel f\u00fcr z.B. Felder h\u00e4ngt ferner vom Kontext ab. In einer Klasse mit 400 Zeilen w\u00e4re uns eine Namensregel, die Felder gegen\u00fcber Variablen hervorhebt, sehr wichtig, in \u00fcberschaubaren Klassen tritt sie dagegen eher in den Hintergrund. Mit Hilfe der Root Cause Analysis geht der Clean Code Developer der eigentlichen Ursache f\u00fcr die Notwendigkeit einer Namensregel auf den Grund.<\/p><h4>Richtig kommentieren<\/h4><div class=\"box\"><strong>Warum?<\/strong><br \/>Unn\u00f6tige oder gar falsche Kommentare halten beim Lesen auf. Der Code sollte so klar und deutlich sein, dass er m\u00f6glichst ohne Kommentare auskommt.<\/div><p>Salopp gesagt ist ein Kommentar im Code ein Hinweis darauf, dass der Code noch verbessert werden kann. Typisch f\u00fcr solche F\u00e4lle sind 3 Zeilen Code, die mit einem Kommentar \u00fcberschrieben sind. An der Stelle hilft es wahrscheinlich, die drei Zeilen als Methode zu extrahieren (Refactoring: Extract Method) und den Kommentar als Name der Methode zu verwenden. Ganz allgemein kann der Bedarf an Kommentaren reduziert werden, in dem man gute Namen verwendet f\u00fcr Variablen, Methoden, Klassen, etc.<\/p><p>Statt<\/p><pre>    int laenge; \/\/ in mm\n<\/pre><p>besser<\/p><pre>    int laengeInMM; \n<\/pre><p>Statt<\/p><pre>    public double Preis() {\n        \/\/ Berechnet den Bruttopreis ...\n    }\n<\/pre><p>besser<\/p><pre>    public Money BruttoPreis() {\n        ...\n    } \n<\/pre><p>Kommentiert werden sollte nicht was man tut, sondern, wenn \u00fcberhaupt, wieso man etwas tut.<\/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-84e69c6 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"84e69c6\" 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-a415a52 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a415a52\" 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-daeab71\" data-id=\"daeab71\" 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-3fc778b elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"3fc778b\" 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-0c96685\" data-id=\"0c96685\" 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-e4b9547 elementor-widget elementor-widget-heading\" data-id=\"e4b9547\" 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-b998bd7 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b998bd7\" 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-40ab3ce\" data-id=\"40ab3ce\" 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-f091872 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"f091872\" 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-fa3d70f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"fa3d70f\" 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-9ed4445\" data-id=\"9ed4445\" 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-1240658 elementor-widget elementor-widget-image\" data-id=\"1240658\" 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_23_issue-tracking-qvpqpqbd0ssb0r26pc6e5lol7rk2xu920l615laoao.png\" title=\"Issue Tracking\" alt=\"Issue Tracking\" 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-f5f14ee\" data-id=\"f5f14ee\" 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-9e02ba1 elementor-widget elementor-widget-heading\" data-id=\"9e02ba1\" 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\">Issue Tracking<\/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-63a4fbb elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"63a4fbb\" 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-af2ef58\" data-id=\"af2ef58\" 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-68789bf elementor-widget elementor-widget-text-editor\" data-id=\"68789bf\" 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 \/>Nur, was man aufschreibt, vergisst man nicht und kann man effektiv delegieren und verfolgen.<\/div><div class=\"core-points\"><table><tbody><tr><th>Wandelbarkeit<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Korrektheit<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Produktionseffizienz<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Kontinuierliche Verbesserung<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Team<\/th><\/tr><\/tbody><\/table><\/div><p>Eine strukturierte Verwaltung aller &#8222;Issues&#8220; ist schon deshalb erforderlich, damit nichts verloren geht. Und nur wenn ein \u00dcberblick \u00fcber alle offenen Punkte m\u00f6glich ist, k\u00f6nnen die Punkte priorisiert und in eine Reihenfolge gebracht werden. Dazu bedarf es nicht zwangsl\u00e4ufig ausgekl\u00fcgelter Tools, ein Board mit Pappkarten kann den Zweck auch erf\u00fcllen. Vor allem sollte hier nicht das Tool im Vordergrund stehen, sondern die T\u00e4tigkeit.<\/p><p>Siehe auch unter <a title=\"Tools\" href=\"#\">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-ac844e8 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"ac844e8\" 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-359e38d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"359e38d\" 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-cd25322\" data-id=\"cd25322\" 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-8d4872f elementor-widget elementor-widget-image\" data-id=\"8d4872f\" 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_1_automated-integrationtests-qvpqtilyjryvs7k7lh3ap5afcmwaxya4vbrfqpol8g.png\" title=\"Automated Integrationtests\" alt=\"Automated Integrationtests\" 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-46f90c5\" data-id=\"46f90c5\" 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-b73c3f5 elementor-widget elementor-widget-heading\" data-id=\"b73c3f5\" 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\">Automated Integrationtests<\/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-79221a9 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"79221a9\" 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-c607d36\" data-id=\"c607d36\" 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-3c28402 elementor-widget elementor-widget-text-editor\" data-id=\"3c28402\" 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 \/>Integrationstests stellen sicher dass der Code tut was er soll. Diese wiederkehrende T\u00e4tigkeit nicht zu automatisieren w\u00e4re Zeitverschwendung.<\/div><div class=\"core-points\"><table><tbody><tr><th>Wandelbarkeit<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Korrektheit<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Produktionseffizienz<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Kontinuierliche Verbesserung<\/th><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><\/tr><tr><th>Single Developer<\/th><\/tr><\/tbody><\/table><\/div><p>Die fundamentale Voraussetzung f\u00fcr jegliche \u00c4nderungen am Code haben wir bereits im <a title=\"Roter Grad\" href=\"#\">roten Grad<\/a> durch den Einsatz eines Versionskontrollsystems gelegt. Wir k\u00f6nnen ohne Sorge \u00c4nderungen am Code vornehmen, ganze Dateien und Verzeichnisse l\u00f6schen, durch das Versionskontrollsystem ist alles wieder abrufbar.<\/p><p>Wenn wir nun \u00c4nderungen am Code vornehmen, sollten wir uns sicher sein, dass wir dabei nichts kaputt machen. Und diese Sicherheit k\u00f6nnen wir nur erlangen, wenn wir nach der \u00c4nderung testen, ob die Anwendung sich noch so verh\u00e4lt wie zuvor. Diese Tests nach jeder \u00c4nderung per Hand durchzuf\u00fchren w\u00e4re nicht praktikabel, wir m\u00fcssen sie automatisieren. Ein gro\u00dfes \u00dcbel der Softwareentwicklung ist die Angst, bei \u00c4nderungen am Code etwas zu \u00fcbersehen, ein Detail nicht zu ber\u00fccksichtigen, und dadurch einen Fehler zu verursachen in Code der vorher funktionierte. Dabei spielt es in der Regel sogar nicht mal eine Rolle, ob die \u00c4nderungen dazu f\u00fchren sollen, dass der Code verbessert wird (Refaktorisieren) oder zus\u00e4tzliche Anforderungen umgesetzt werden sollen. Solange wir nach Durchf\u00fchren einer \u00c4nderung nicht sicher sind, dass alles noch so funktioniert wie zuvor, bleibt die Angst. Diese f\u00fchrt dazu, dass wir Code im Zweifelsfall so belassen, wie er ist, denn er funktioniert ja. Notwendige Refaktorisierungen werden unterlassen, aus Angst Fehler zu machen.<\/p><p>Damit wir uns auch in schon laufenden Projekten (sogenannte <i>Brownfield<\/i> Projekte, im Gegensatz zu <i>Greenfield<\/i> &#8222;auf der gr\u00fcnen Wiese&#8220;) dieses Sicherheitsnetz schaffen k\u00f6nnen, ben\u00f6tigen wir Verfahren, die auf vorhandenen Code angewendet werden k\u00f6nnen. Dazu eignen sich automatisierte Integrationstests. Sie setzen entweder ganz oben auf der Benutzerschnittstelle auf und testen die Anwendung durch alle Layer oder setzen weiter unten auf. In jedem Fall werden mehrere Funktionseinheiten im Zusammenspiel getestet.<\/p><p>Bevor wir also \u00c4nderungen oder Erweiterungen am Code vornehmen, erstellen wir f\u00fcr die betroffenen Codebereiche Integrationstests. Dabei k\u00f6nnen Tools und Techniken wie WatiN, UI Automation, etc. verwendet werden. W\u00fcnschenswert sind nat\u00fcrlich auch Unit Tests, welche einzelne Funktionseinheiten isoliert testen. Dazu muss der Code allerdings Voraussetzungen erf\u00fcllen, die vermutlich nicht immer gegeben sind: der Code muss bereits das <i>Single Responsibility Prinzip<\/i> ber\u00fccksichtigen. Andernfalls sind die Abh\u00e4ngigkeiten zwischen den Funktionseinheiten (Komponenten, Klassen oder Methoden) so gro\u00df, dass sie nicht isoliert getestet werden k\u00f6nnen. Das Fernziel ist nat\u00fcrlich eine Codebasis, bei der Unit Tests m\u00f6glich sind. Mehr noch: wir werden in Zukunft die Tests vor der Implementierung erstellen (<i>Test first<\/i>). Aber um durch Refaktorisierungen dorthin zu gelangen, bedarf es erst der Integrationstests, um sicherzustellen, dass die Anwendung sich noch so verh\u00e4lt wie vor der Refaktorisierung.<\/p><p>Siehe auch unter <a title=\"Tools\" href=\"#\">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-4ca9c84 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"4ca9c84\" 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-0b820cf elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0b820cf\" 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-fa4b932\" data-id=\"fa4b932\" 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-51a99c6 elementor-widget elementor-widget-image\" data-id=\"51a99c6\" 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_32_read-read-read-qvpqvw59tp7z4q3yq02ci1pdep6peeppj34mew5ri8.png\" title=\"Read, Read, Read\" alt=\"Read, Read, Read\" 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-705897f\" data-id=\"705897f\" 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-2a814c9 elementor-widget elementor-widget-heading\" data-id=\"2a814c9\" 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\">Read, Read, Read<\/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-7904d44 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7904d44\" 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-30d8bda\" data-id=\"30d8bda\" 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-b7b5310 elementor-widget elementor-widget-text-editor\" data-id=\"b7b5310\" 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 \/>Lesen bildet!<\/div><div class=\"core-points\"><table><tbody><tr><th>Wandelbarkeit<\/th><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><\/tr><tr><th>Korrektheit<\/th><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><\/tr><tr><th>Produktionseffizienz<\/th><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><\/tr><tr><th>Kontinuierliche Verbesserung<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Single Developer<\/th><\/tr><\/tbody><\/table><\/div><p>Lesen bildet &#8211; wir sind jedenfalls fest davon \u00fcberzeugt, dass dies auch f\u00fcr Software-Entwickler gilt. Die Softwaretechnik entwickelt sich nach wie vor weiter. Neben den gro\u00dfen Entwicklungsschritten wie Prozedurale Programmierung, Objektorientierte Programmierung, Funktionale Programmierung, Aspektorientierte Programmierung, etc. gibt es st\u00e4ndig Entwicklungen im Kleinen mit denen sich ein professioneller Software-Entwickler auseinandersetzen muss. Da w\u00e4ren zum einen Techniken wie etwa <i>Dependency Injection<\/i> oder <i>Object Relational Mapper<\/i>. Aber auch innerhalb dieser Techniken gibt es Entwicklungsschritte wie etwa <i>Domain Specific Languages (DSLs)<\/i> zur Konfiguration vs. XML basierende Konfiguration. Neben den technischen Aspekten der Softwareentwicklung wird auch der Prozess st\u00e4ndig weiterentwickelt. So hat sich die Erkenntnis durchgesetzt, dass Wasserfallmodelle nicht funktionieren, verschiedene agile Prozesse werden entwickelt. All dies muss der Clean Code Developer im Blick haben.<\/p><p>Wir schlagen daher vor, pro Jahr wenigstens 6 Fachb\u00fccher zu lesen. Ferner sollten Periodika regelm\u00e4\u00dfig gelesen werden und darunter verstehen wir neben Fachzeitschriften auch Blogs.<\/p><p>Anregungen finden Sie in der <a title=\"Literaturliste\" href=\"http:\/\/clean-code-developer.de\/weitere-infos\/literatur\/\">Literaturliste<\/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-4d4e5b0 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"4d4e5b0\" 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-c178959 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"c178959\" 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-e66ae64\" data-id=\"e66ae64\" 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-434437f elementor-widget elementor-widget-image\" data-id=\"434437f\" 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_33_reviews-qvpqxxgoms0cab5gtvr8wj7bqr5c2ssrt60huh520w.png\" title=\"Reviews\" alt=\"Reviews\" 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-64afbb0\" data-id=\"64afbb0\" 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-472a0e7 elementor-widget elementor-widget-heading\" data-id=\"472a0e7\" 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\">Reviews<\/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-7e280072 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7e280072\" 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-4e51af8e\" data-id=\"4e51af8e\" 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-65adca82 elementor-widget elementor-widget-text-editor\" data-id=\"65adca82\" 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 \/>Vier Augen sehen mehr als zwei. Wenn der eine Entwickler dem anderen seinen Code erkl\u00e4rt, tauchen meist Details auf, die bislang nicht bedacht wurden.<\/div><div class=\"core-points\"><table><tbody><tr><th>Wandelbarkeit<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Korrektheit<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Produktionseffizienz<\/th><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><\/tr><tr><th>Kontinuierliche Verbesserung<\/th><td><i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star\"><\/i>\u00a0<i class=\"fa fa-star-o\"><\/i><\/td><\/tr><tr><th>Team<\/th><\/tr><\/tbody><\/table><\/div><p>Reviews kommen vereinfacht in zwei Spielarten daher: als kontinuierlicher Prozess beim Pair Programming, als eigenst\u00e4ndiger Prozessschritt beim Code Review. Das Ziel ist in beiden F\u00e4llen das gleiche: der Code soll von einem zweiten Entwickler begutachtet werden. Dies beugt der &#8222;Betriebsblindheit&#8220; vor. Schon die Tatsache dass ein Entwickler seinen Code einem anderen Entwickler vorstellt und beschreibt, f\u00fchrt zu Aha Erlebnissen.<\/p><p>In der Regel wird erst durch die Diskussion mit anderen Entwicklern deutlich, wo die St\u00e4rken und Schw\u00e4chen einer Codebasis liegen. Gerade der Prozess der st\u00e4ndigen Verbesserung bedingt es, sich mit der Sichtweise anderer Entwickler auseinander zu setzen.<\/p><p>Selbstverst\u00e4ndlich ist nicht nur der Quellcode eine geeignete Basis f\u00fcr Reviews. Sie bieten eine g\u00fcnstige M\u00f6glichkeit, die Ergebnisse jeder Entwicklungst\u00e4tigkeit zu \u00fcberpr\u00fcfen, sofern sie in einem &#8222;lesbaren&#8220; Ergebnis m\u00fcnden. Neben rein informellen Reviews, wie dem Pair Programming oder der Begutachtung durch eine zweite Person gibt es auch das formale Review mit einem Reviewprozess sowie entsprechenden Rollen. Weitere bekannte Arten des Review sind z.B. Walkthrough, Technisches Review, Peer Review und Inspektion.<\/p><p>Reviews erg\u00e4nzen dynamische Tests, wie z.B. den automatischen Unit-Test oder den automatischen Integrationstest aus dem <a title=\"Gelber Grad\" href=\"http:\/\/clean-code-developer.de\/die-grade\/gelber-grad\/\">gelben Grad<\/a> bzw. <a title=\"Oranger Grad\" href=\"http:\/\/clean-code-developer.de\/die-grade\/orangener-grad\/\">orangen Grad<\/a>. Im Gegensatz zu diesen Tests, sind Reviews auch sehr gut geeignet, Fehler in den Anforderungen zu finden. Auch k\u00f6nnen sie bereits sehr fr\u00fch im Entwicklungsprozess eingesetzt und Fehler dadurch auch sehr fr\u00fch gefunden werden. Und um so fr\u00fcher Fehler gefunden werden, um so g\u00fcnstiger ist auch deren Beseitigung.<\/p><h4>Quellen<\/h4><table><thead><tr><th>Quelle<\/th><th>Autor<\/th><th>Kurzbeschreibung<\/th><\/tr><\/thead><tbody><tr><td>Basiswissen Softwaretest, Aus- und Weiterbildung zum<\/td><td>T. Linz und A. Spillner<\/td><td>Das Lehrbuch zum Certified Tester Foundation Level nach ISTQB<\/td><\/tr><tr><td>Certified Tester Foundation Level nach ISTQB-Standard<\/td><\/tr><\/tbody><\/table><p>An den orangen Grad schlie\u00dft sich der <a title=\"Gelber Grad\" href=\"http:\/\/clean-code-developer.de\/die-grade\/gelber-grad\/\">gelbe Grad<\/a> an.<\/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>Inhaltsverzeichnis Prinzipien Single Level of Abstraction Warum?Die Einhaltung eines Abstraktionsniveaus f\u00f6rdert die Lesbarkeit. Wandelbarkeit \u00a0\u00a0 Korrektheit \u00a0\u00a0 Produktionseffizienz \u00a0\u00a0 Kontinuierliche Verbesserung \u00a0\u00a0 Single Developer Eine Codezeile kann auf verschiedenen Abstraktionsniveaus liegen. Die Zuweisung eines Wertes an eine Variable liegt auf einem niedrigeren Abstraktionsniveau als etwa ein Methodenaufruf. Schlie\u00dflich kann sich hinter dem Methodenaufruf weit mehr [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":17,"menu_order":3,"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-33","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/clean-code-developer.de\/es\/wp-json\/wp\/v2\/pages\/33","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=33"}],"version-history":[{"count":5,"href":"https:\/\/clean-code-developer.de\/es\/wp-json\/wp\/v2\/pages\/33\/revisions"}],"predecessor-version":[{"id":982,"href":"https:\/\/clean-code-developer.de\/es\/wp-json\/wp\/v2\/pages\/33\/revisions\/982"}],"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=33"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}