{"id":45223,"date":"2025-05-05T13:50:15","date_gmt":"2025-05-05T11:50:15","guid":{"rendered":"https:\/\/www.happycoders.eu\/effektives-arbeiten-mit-legacy-code-refactoring-und-testen-bestehender-software\/"},"modified":"2026-04-14T22:40:03","modified_gmt":"2026-04-14T20:40:03","slug":"effektives-arbeiten-mit-legacy-code-refactoring-und-testen-bestehender-software","status":"publish","type":"post","link":"https:\/\/www.happycoders.eu\/de\/buecher\/effektives-arbeiten-mit-legacy-code-refactoring-und-testen-bestehender-software\/","title":{"rendered":"Effektives Arbeiten mit Legacy Code. Refactoring und Testen bestehender Software"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Effektives Arbeiten mit Legacy Code. Refactoring und Testen bestehender Software<\/h1>\n\n\n\n<div class=\"wp-block-columns hc-books-v2 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n    <div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:730px\">\n        <p class=\"hc-book-author\">von Michael C. Feathers<\/p>\n        \n        <p>Dass Tests wichtig sind, und dass Test-Driven-Development zu gut getesteter, gut strukturierter Software f\u00fchrt, wei\u00df heutzutage jeder Programmierer. Leider war das nicht immer der Fall. Und so stehen wir oft vor der Herausforderung, ein System ohne Tests \u2013 ein also ein \u201cLegacy System\u201d nach Michael Feathers Definition \u2013 weiterzuentwickeln.<\/p>\n        <p>Doch wie gehen wir vor, wenn wir keine Testabdeckung haben, um sicherzustellen, dass unsere \u00c4nderungen nichts kaputt machen? Und wenn wir andererseits diese Tests nicht schreiben k\u00f6nnen, weil der Code zu komplex ist, viel zu viele Abh\u00e4ngigkeiten enth\u00e4lt und Logik und Pr\u00e4sentation miteinander verwoben sind?<\/p>\n        <p>Was k\u00f6nnen wir tun, wenn wir die zu testende Klasse nicht instanziieren k\u00f6nnen, weil wir ihrem Konstruktor ein Objekt \u00fcbergeben m\u00fcssen, das wir nicht einfach erzeugen k\u00f6nnen? Oder wenn die zu testende Methode auf die Datenbank zugreift \u2013 obwohl dieser Datenbankzugriff f\u00fcr die Funktionalit\u00e4t, die wir testen wollen, nicht notwendig ist?<\/p>\n        <p>Dieses Buch enth\u00e4lt einen Katalog von Mechanismen, um diese Abh\u00e4ngigkeiten zu lokalisieren und aufzubrechen. Und um den Code entsprechend zu modularisieren, wobei Modulgrenzen geschaffen werden \u2013 sogenannte \u201cSeams\u201d (deutsch: \u201cN\u00e4hte\u201d), an denen wir mit unseren Unit-Tests ansetzen k\u00f6nnen.<\/p>\n        <p>Die vorgestellten Strategien erlauben \u00c4nderungen mit minimalen Risiken. Die Refactoring-Features moderner IDEs erlauben es viele dieser \u00c4nderungen vollautomatisch durchzuf\u00fchren. \u00c4nderungen, die es dann erlauben erste Tests zu implementieren, um darauf aufbauend weitreichendere Refactorings durchzuf\u00fchren, die letztendlich die Codebasis in ein besseres Design \u00fcberf\u00fchren.<\/p>\n        <p>Der Autor erkl\u00e4rt alle Strategien anhand hervorragender, praxisnaher Beispiele, die haupts\u00e4chlich in Java und C++ geschrieben sind.<\/p>\n        <p>Leider wurde das Buch seit 15 Jahren nicht aktualisiert. Vor allem unerfahrene Programmierer sollten darauf achten, nicht jede Strategie dogmatisch umzusetzen. F\u00fcr einige Mechanismen gibt es heutzutage bessere Alternativen; einige der Praktiken f\u00fchren zu schlechterem, statt zu besserem Code; und das Thema Threadsicherheit \u2013 ein Kernthema in den meisten heutigen Unternehmensanwendungen \u2013 wird v\u00f6llig au\u00dfer Acht gelassen.<\/p>\n        <p>Beispielsweise braucht man heutzutage nicht mehr f\u00fcr jede zu mockende Klasse ein Interface. Mockito kann problemlos Klassen mocken, also Abh\u00e4ngigkeiten aufl\u00f6sen ohne ein Interface zu extrahieren. Und wer doch ein Interface extrahiert, beachte dabei bitte das <a href=\"https:\/\/de.wikipedia.org\/wiki\/Interface-Segregation-Prinzip\" target=\"_blank\" rel=\"noopener\">Interface Segregation Principle<\/a>! Die Aussage des Autors, \"it's nice to have an interface that covers <em>all<\/em> of the public methods of a class\" (S. 366), steht leider in krassem Widerspruch dazu.<\/p>\n        <p>Den Aufruf abstrakter Methoden aus einem Konstruktor heraus (\"Extract and override factory method\") sollte man besser vermeiden, wenn man nicht pl\u00f6tzlich einem nur teilweise initialisierten Objekt gegen\u00fcberstehen m\u00f6chte. Aus gutem Grund verbietet C++ diese Praktik. F\u00fcnfundf\u00fcnfzig Seiten nach der Einf\u00fchrung dieser Strategie r\u00e4t der Autor schlie\u00dflich vor deren Einsatz auch in Java ab.<\/p>\n        <p>Multithreading ist in fast keinem der \u00e4lteren Klassiker ein Thema. Heutzutage kommt kein Programmierer mehr daran vorbei. Wenn du eine Klasse mit Strategien wie \"Break Out Method Object\" extrahierst, solltest du daher unbedingt einen Hinweis anbringen, dass die Klasse nicht threadsicher ist. (Alternativ kannst du Instanzvariablen durch geeignete Lock-Mechanismen sch\u00fctzen.)<\/p>\n        <p>Trotz der genannten altersbedingten Schw\u00e4chen kann ich das Buch jedem Programmierer empfehlen, der mit Legacy-Code arbeiten muss. Erfahrene Programmierer haben sicherlich die eine oder andere Strategie schon einmal intuitiv angewendet. Andere Techniken m\u00f6gen neu sein. So oder so, die Formalisierung hilft, die Strategien zu festigen, und ihre Namen verbessern die Kommunikation im Team.<\/p>\n        <p>Behalte nur zwei Dinge im Hinterkopf: Das Buch ist 15 Jahre alt, und f\u00fcr jede Regel gibt es eine Ausnahme!<\/p>\n        <p>\ud83c\udfa7 <em>Geeignet als H\u00f6rbuch? Nein, aufgrund zahlreicher Codebeispiele.<\/em><\/p>\n    <\/div>\n    \n\n    \n    <div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:400px\">\n        <figure class=\"wp-block-image size-half_400\"><a href=\"https:\/\/www.amazon.de\/Effektives-Arbeiten-Refactoring-bestehender-Software\/dp\/3826690214?&amp;linkCode=ll1&amp;tag=happycoders07-21&amp;linkId=5d433c1ea2c006e00ba4526d94e4824b&amp;language=de_DE&amp;ref_=as_li_ss_tl\" target=\"_blank\" rel=\" noopener\"><img decoding=\"async\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/effektives-arbeiten-mit-legacy-code-michael-feathers.jpg\" alt=\"Effektives Arbeiten mit Legacy Code. Refactoring und Testen bestehender Software - Michael C. Feathers\" style=\"width:400px;height:566px\"\/><\/a><\/figure>\n        \n\n        \n        <p class=\"hc-book-button\"><a href=\"https:\/\/www.amazon.de\/Effektives-Arbeiten-Refactoring-bestehender-Software\/dp\/3826690214?&amp;linkCode=ll1&amp;tag=happycoders07-21&amp;linkId=5d433c1ea2c006e00ba4526d94e4824b&amp;language=de_DE&amp;ref_=as_li_ss_tl\" target=\"_blank\" rel=\"noopener\">Buch bei Amazon kaufen *<\/a><\/p>\n        \n\n        \n        <p class=\"hc-original-button\"><a href=\"https:\/\/www.amazon.de\/gp\/product\/0131177052\/ref=as_li_qf_asin_il_tl?ie=UTF8&amp;tag=happycoders07-21&amp;creative=6742&amp;linkCode=as2&amp;creativeASIN=0131177052&amp;linkId=04959ed2c1d4e2ff6a6188db46f49982\" target=\"_blank\" rel=\"noopener\"><span>Englisches Original bei Amazon:<\/span>Working Effectively With Legacy Code<\/a><\/p>\n        \n\n        \n        <h4 class=\"wp-block-heading hc-genres-heading\">Genres<\/h4>\n        \n\n        \n        <p class=\"hc-genres-links\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/genres\/softwareentwicklung\/\">Softwareentwicklung<\/a> <a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/genres\/programmierung\/\">Programmierung<\/a> <a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/genres\/softwaretests\/\">Softwaretests<\/a> <a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/genres\/softwarearchitektur\/\">Softwarearchitektur<\/a> <a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/genres\/agile-entwicklung-agiles-projektmanagement\/\">Agile Entwicklung &amp; Agiles Projektmanagement<\/a> <a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/genres\/informatik\/\">Informatik<\/a> <\/p>\n        <\/div>\n    <\/div>\n\n\n\n<h2 class=\"wp-block-heading hc-book-other-books-heading\">Andere Empfehlungen aus den Genres dieses Buches<\/h2>\n\n\n\n<div class=\"wp-block-group hc-book-other-books has-global-padding\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n    \n    <div class=\"wp-block-group hc-book-other-book has-global-padding\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n        <figure class=\"wp-block-image size-feature_thumb_224\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/clean-code-refactoring-patterns-testen-und-techniken-fuer-sauberen-code\/\"><img decoding=\"async\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/03\/clean-code-buch-336x473.jpg\" alt=\"Clean Code \u2013 Refactoring, Patterns, Testen und Techniken f\u00fcr sauberen Code - Robert C. Martin\" style=\"width:192px;height:270px\"\/><\/a><\/figure>\n        \n\n        \n        <p class=\"hc-book-title\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/clean-code-refactoring-patterns-testen-und-techniken-fuer-sauberen-code\/\">Clean Code \u2013 Refactoring, Patterns, Testen und Techniken f\u00fcr sauberen Code<\/a><\/p>\n        \n\n        \n        <p class=\"hc-book-author\">Robert C. Martin<\/p>\n        <\/div><\/div>\n    \n    \n    <div class=\"wp-block-group hc-book-other-book has-global-padding\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n        <figure class=\"wp-block-image size-feature_thumb_224\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/design-patterns\/\"><img decoding=\"async\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/design-patterns-entwurfsmuster-erich-gamma-336x475.jpg\" alt=\"Design Patterns: Entwurfsmuster als Elemente wiederverwendbarer objektorientierter Software - Erich Gamma, Richard Helm, Ralph E. Johnson, John Vlissides\" style=\"width:192px;height:271px\"\/><\/a><\/figure>\n        \n\n        \n        <p class=\"hc-book-title\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/design-patterns\/\">Design Patterns: Entwurfsmuster als Elemente wiederverwendbarer objektorientierter Software<\/a><\/p>\n        \n\n        \n        <p class=\"hc-book-author\">Erich Gamma, Richard Helm, Ralph E. Johnson, John Vlissides<\/p>\n        <\/div><\/div>\n    \n    \n    <div class=\"wp-block-group hc-book-other-book has-global-padding\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n        <figure class=\"wp-block-image size-feature_thumb_224\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/refactoring\/\"><img decoding=\"async\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/06\/Refactoring-Buch-Martin-Fowler-336x475.jpg\" alt=\"Refactoring: Wie Sie das Design bestehender Software verbessern - Martin Fowler\" style=\"width:192px;height:271px\"\/><\/a><\/figure>\n        \n\n        \n        <p class=\"hc-book-title\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/refactoring\/\">Refactoring: Wie Sie das Design bestehender Software verbessern<\/a><\/p>\n        \n\n        \n        <p class=\"hc-book-author\">Martin Fowler<\/p>\n        <\/div><\/div>\n    \n    \n    <div class=\"wp-block-group hc-book-other-book has-global-padding\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n        <figure class=\"wp-block-image size-feature_thumb_224\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/clean-craftsmanship\/\"><img decoding=\"async\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/05\/Clean-Craftsmanship-deutsch-Robert-Martin-Uncle-Bob-336x475.jpg\" alt=\"Clean Craftsmanship: Best Practices, Standards und Ethik f\u00fcr die Softwareentwicklung - Robert C. Martin\" style=\"width:192px;height:271px\"\/><\/a><\/figure>\n        \n\n        \n        <p class=\"hc-book-title\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/clean-craftsmanship\/\">Clean Craftsmanship: Best Practices, Standards und Ethik f\u00fcr die Softwareentwicklung<\/a><\/p>\n        \n\n        \n        <p class=\"hc-book-author\">Robert C. Martin<\/p>\n        <\/div><\/div>\n    \n    \n    <div class=\"wp-block-group hc-book-other-book has-global-padding\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n        <figure class=\"wp-block-image size-feature_thumb_224\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/der-pragmatische-programmierer\/\"><img decoding=\"async\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/der-pragmatische-programmierer-david-thomas-andrew-hunt-336x470.jpg\" alt=\"Der pragmatische Programmierer: Ihr Weg zur Meisterschaft - Andrew Hunt und David Thomas\" style=\"width:192px;height:268px\"\/><\/a><\/figure>\n        \n\n        \n        <p class=\"hc-book-title\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/der-pragmatische-programmierer\/\">Der pragmatische Programmierer: Ihr Weg zur Meisterschaft<\/a><\/p>\n        \n\n        \n        <p class=\"hc-book-author\">Andrew Hunt und David Thomas<\/p>\n        <\/div><\/div>\n    \n    \n    <div class=\"wp-block-group hc-book-other-book has-global-padding\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n        <figure class=\"wp-block-image size-feature_thumb_224\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/growing-object-oriented-software-guided-by-tests\/\"><img decoding=\"async\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2019\/06\/Growing_Object-Oriented_Software_Guided_by_Tests-336x440.jpg\" alt=\"Growing Object-Oriented Software, Guided by Tests - Steve Freeman und Nat Pryce\" style=\"width:192px;height:251px\"\/><\/a><\/figure>\n        \n\n        \n        <p class=\"hc-book-title\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/growing-object-oriented-software-guided-by-tests\/\">Growing Object-Oriented Software, Guided by Tests<\/a><\/p>\n        \n\n        \n        <p class=\"hc-book-author\">Steve Freeman und Nat Pryce<\/p>\n        <\/div><\/div>\n    \n    \n    <div class=\"wp-block-group hc-book-other-book has-global-padding\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n        <figure class=\"wp-block-image size-feature_thumb_224\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/pattern-hatching\/\"><img decoding=\"async\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2019\/06\/Pattern_Hatching_Design_Patterns_Applied-336x421.jpg\" alt=\"Pattern Hatching: Design Patterns Applied - John Vlissides\" style=\"width:192px;height:240px\"\/><\/a><\/figure>\n        \n\n        \n        <p class=\"hc-book-title\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/pattern-hatching\/\">Pattern Hatching: Design Patterns Applied<\/a><\/p>\n        \n\n        \n        <p class=\"hc-book-author\">John Vlissides<\/p>\n        <\/div><\/div>\n    \n    \n    <div class=\"wp-block-group hc-book-other-book has-global-padding\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n        <figure class=\"wp-block-image size-feature_thumb_224\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/clean-coder\/\"><img decoding=\"async\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/04\/clean-coder-verhaltensregeln-robert-martin-336x472.jpg\" alt=\"Clean Coder: Verhaltensregeln f\u00fcr professionelle Programmierer - Robert C. Martin\" style=\"width:192px;height:269px\"\/><\/a><\/figure>\n        \n\n        \n        <p class=\"hc-book-title\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/clean-coder\/\">Clean Coder: Verhaltensregeln f\u00fcr professionelle Programmierer<\/a><\/p>\n        \n\n        \n        <p class=\"hc-book-author\">Robert C. Martin<\/p>\n        <\/div><\/div>\n    \n    \n    <div class=\"wp-block-group hc-book-other-book has-global-padding\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n        <figure class=\"wp-block-image size-feature_thumb_224\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/agile-software-development\/\"><img decoding=\"async\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2019\/06\/Agile_Software_Development_Principles_Patterns_and_Practices-336x425.jpg\" alt=\"Agile Software Development: Principles, Patterns, and Practices - Robert C. Martin\" style=\"width:192px;height:242px\"\/><\/a><\/figure>\n        \n\n        \n        <p class=\"hc-book-title\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/agile-software-development\/\">Agile Software Development: Principles, Patterns, and Practices<\/a><\/p>\n        \n\n        \n        <p class=\"hc-book-author\">Robert C. Martin<\/p>\n        <\/div><\/div>\n    \n    \n    <div class=\"wp-block-group hc-book-other-book has-global-padding\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n        <figure class=\"wp-block-image size-feature_thumb_224\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/clean-architecture-gute-softwarearchitekturen\/\"><img decoding=\"async\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/08\/clean-architecture-deutsch-robert-c-martin-336x475.jpg\" alt=\"Clean Architecture \u2013 Gute Softwarearchitekturen: Das Praxis-Handbuch f\u00fcr professionelles Softwaredesign. Regeln und Paradigmen f\u00fcr effiziente Softwarestrukturierung. - Robert C. Martin\" style=\"width:192px;height:271px\"\/><\/a><\/figure>\n        \n\n        \n        <p class=\"hc-book-title\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/clean-architecture-gute-softwarearchitekturen\/\">Clean Architecture \u2013 Gute Softwarearchitekturen: Das Praxis-Handbuch f\u00fcr professionelles Softwaredesign. Regeln und Paradigmen f\u00fcr effiziente Softwarestrukturierung.<\/a><\/p>\n        \n\n        \n        <p class=\"hc-book-author\">Robert C. Martin<\/p>\n        <\/div><\/div>\n    \n    \n    <div class=\"wp-block-group hc-book-other-book has-global-padding\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n        <figure class=\"wp-block-image size-feature_thumb_224\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/domain-driven-design\/\"><img decoding=\"async\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/10\/domain-driven-design-eric-evans-336x456.jpg\" alt=\"Domain-Driven Design: Tackling Complexity in the Heart of Software - Eric Evans\" style=\"width:192px;height:260px\"\/><\/a><\/figure>\n        \n\n        \n        <p class=\"hc-book-title\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/domain-driven-design\/\">Domain-Driven Design: Tackling Complexity in the Heart of Software<\/a><\/p>\n        \n\n        \n        <p class=\"hc-book-author\">Eric Evans<\/p>\n        <\/div><\/div>\n    \n    \n    <div class=\"wp-block-group hc-book-other-book has-global-padding\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n        <figure class=\"wp-block-image size-feature_thumb_224\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/implementing-domain-driven-design\/\"><img decoding=\"async\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2023\/05\/implementing-domain-driven-design-vaughn-vernon-336x450.jpg\" alt=\"Implementing Domain-Driven Design - Vaughn Vernon\" style=\"width:192px;height:257px\"\/><\/a><\/figure>\n        \n\n        \n        <p class=\"hc-book-title\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/implementing-domain-driven-design\/\">Implementing Domain-Driven Design<\/a><\/p>\n        \n\n        \n        <p class=\"hc-book-author\">Vaughn Vernon<\/p>\n        <\/div><\/div>\n    \n    \n    <div class=\"wp-block-group hc-book-other-book has-global-padding\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n        <figure class=\"wp-block-image size-feature_thumb_224\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/extreme-programming\/\"><img decoding=\"async\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/02\/extreme-programming-manifest-kent-beck-336x480.jpg\" alt=\"Extreme Programming: Das Manifest - Kent Beck und Cynthia Andres\" style=\"width:192px;height:274px\"\/><\/a><\/figure>\n        \n\n        \n        <p class=\"hc-book-title\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/extreme-programming\/\">Extreme Programming: Das Manifest<\/a><\/p>\n        \n\n        \n        <p class=\"hc-book-author\">Kent Beck und Cynthia Andres<\/p>\n        <\/div><\/div>\n    \n    \n    <div class=\"wp-block-group hc-book-other-book has-global-padding\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n        <figure class=\"wp-block-image size-feature_thumb_224\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/projekt-unicorn\/\"><img decoding=\"async\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/03\/projekt-unicorn-gene-kim-336x504.jpg\" alt=\"Projekt Unicorn: Der Roman \u00fcber Entwickler, Digital Disruption und das \u00dcberleben im Datenzeitalter - Gene Kim\" style=\"width:192px;height:288px\"\/><\/a><\/figure>\n        \n\n        \n        <p class=\"hc-book-title\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/projekt-unicorn\/\">Projekt Unicorn: Der Roman \u00fcber Entwickler, Digital Disruption und das \u00dcberleben im Datenzeitalter<\/a><\/p>\n        \n\n        \n        <p class=\"hc-book-author\">Gene Kim<\/p>\n        <\/div><\/div>\n    \n    \n    <div class=\"wp-block-group hc-book-other-book has-global-padding\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n        <figure class=\"wp-block-image size-feature_thumb_224\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/das-mindset-von-devops-accelerate\/\"><img decoding=\"async\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2022\/03\/accelerate-das-mindset-von-devops-336x496.jpg\" alt=\"Das Mindset von DevOps. Accelerate: 24 Schl\u00fcsselkompetenzen, um leistungsstarke Technologieunternehmen zu entwickeln und zu skalieren - Dr. Nicole Forsgren, Jez Humble und Gene Kim\" style=\"width:192px;height:283px\"\/><\/a><\/figure>\n        \n\n        \n        <p class=\"hc-book-title\"><a href=\"https:\/\/www.happycoders.eu\/de\/buecher\/das-mindset-von-devops-accelerate\/\">Das Mindset von DevOps. Accelerate: 24 Schl\u00fcsselkompetenzen, um leistungsstarke Technologieunternehmen zu entwickeln und zu skalieren<\/a><\/p>\n        \n\n        \n        <p class=\"hc-book-author\">Dr. Nicole Forsgren, Jez Humble und Gene Kim<\/p>\n        <\/div><\/div>\n    \n<\/div><\/div>\n\n\n\n<p class=\"hc-book-disclosure\"><em>* Hinweis: Wir teilen gerne unsere Lieblingsb\u00fccher mit dir! Als Amazon-Partner verdienen wir eine kleine Provision bei Eink\u00e4ufen, die du \u00fcber unsere Links t\u00e4tigst. Dies hilft uns, weiterhin Inhalte zu erstellen, die dir gefallen.<\/em><\/p>\n<aside><h4 style=\"margin-top:60px\">Verpasse keine Buchempfehlungen und Profi-Tipps zu Java!<\/h4>\r\n                       <p>M\u00f6chtest du benachrichtigt werden, wenn ich neue Buchempfehlungen ver\u00f6ffentliche? Dann <a href=\"#\" data-formkit-toggle=\"d8ee997126\">klicke hier<\/a>, um dich f\u00fcr den HappyCoders-Newsletter anzumelden und erhalte meine Buchempfehlungen neben regelm\u00e4\u00dfigen Tipps zu Java-Programmierung, Algorithmen und Datenstrukturen.<\/p>\r\n                       <p>\ud83d\udc49 <a href=\"#\" data-formkit-toggle=\"d8ee997126\">Newsletter-Anmeldung<\/a><\/p><\/aside>","protected":false},"excerpt":{"rendered":"<p>Entdecke Strategien, um Legacy-Code testbar zu machen. Trotz des Alters ein wertvolles Buch \u2013 behalte aber moderne Alternativen und Multithreading im Blick.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_uag_custom_page_level_css":"","_wp_convertkit_post_meta":{"form":"-1","landing_page":"0","tag":"0","restrict_content":"0"},"_metis_text_type":"standard","_metis_text_length":6077,"_post_count":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-45223","post","type-post","status-publish","format-standard","hentry","category-buecher"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"feature_thumb_224":false,"feature_thumb_336":false,"feature_thumb_504":false,"feature_thumb_672":false,"half_400":false,"half_600":false,"full_800":false,"full_944":false,"full_1200":false,"wide_1180":false,"wide_1770":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Sven Woltmann","author_link":"https:\/\/www.happycoders.eu\/de\/author\/sven\/"},"uagb_comment_info":0,"uagb_excerpt":"Entdecke Strategien, um Legacy-Code testbar zu machen. Trotz des Alters ein wertvolles Buch \u2013 behalte aber moderne Alternativen und Multithreading im Blick.","public_identification_id":"917279d91a6e4b7b953365b65d501411","private_identification_id":"7838eaee944b4b8dbfa113d1156cfe43","_links":{"self":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/45223","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/comments?post=45223"}],"version-history":[{"count":10,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/45223\/revisions"}],"predecessor-version":[{"id":54547,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/45223\/revisions\/54547"}],"wp:attachment":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/media?parent=45223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/categories?post=45223"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/tags?post=45223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}