Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Mit kleinen Aufräumschritten zu strukturierterer Software - Profitieren Sie von der Coding-Erfahrung eines herausragenden Entwicklers: Kent Beck - Mit pragmatischen Mini-Refactorings zu mehr Freude im Entwickleralltag und besseren Ergebnissen - Behandelt kaum thematisierte Aspekte wie die emotionale und soziale Situation von Entwickler*innen und die Kosten von Refactorings Unordentlicher Code ist ein Ärgernis und schwer zu lesen. In diesem praktischen Leitfaden demonstriert Kent Beck, Schöpfer von Extreme Programming, wann und wie Sie kleinere Aufräumarbeiten durchführen können, um Ihren Code zu optimieren und dabei die Gesamtstruktur Ihres Systems immer besser zu verstehen. Anstatt sich mit zu viel Aufräumen auf einmal zu überfordern, zeigt Kent Beck, wie Sie pragmatisch vorgehen. Sie lernen etwa, wie Sie eine Funktion mit vielen Codezeilen logisch in kleinere Stücke aufteilen. Und nebenbei verstehen Sie wichtige Aspekte der Theorie wie Kopplung, Kohäsion, abgezinste Zahlungsströme und Optionalität. Dieses Buch unterstützt Sie dabei: - die grundlegende Theorie zu verstehen, wie Software-Design funktioniert und welche Kräfte darauf einwirken - unterschiedliche Auswirkungen bei Änderungen am Verhalten eines Systems und bei Änderungen an seiner Struktur einzuschätzen - Ihr Programmiererlebnis zu verbessern, indem Sie manchmal zuerst aufräumen und manchmal später - zu lernen, wie Sie große Veränderungen in kleinen, sicheren Schritten vornehmen - Softwareentwicklung als ein Pflegen menschlicher Beziehungen zu verstehen
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 116
Veröffentlichungsjahr: 2024
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Es lohnt sich immer, Kent Beck zuzuhören, und ich habe nun schon mehrere Jahrzehnte auf die Ratschläge, die in diesem Buch zu finden sind, gewartet. Das Buch unterstützt mich dabei, den Fokus bei der Softwareentwicklung von Tools und Technologie wegzubewegen hin zu dem, was wirklich wichtig ist: Design! Beim Design geht es um die Formen, die wir mit unserem Code erschaffen, und Kent hilft uns dabei, bessere Formen zu kreieren. Ein wichtiges Buch zu einem wichtigen Thema.
– Dave Farley, Gründer und Direktor von Continuous Delivery Ltd.
Es kann beim Entwickeln in nur schwer verständlichen Codebasen knifflig sein, herauszufinden, wo man anfangen soll. Dieses Buch gibt praktische Tipps für Developer jeder Erfahrungsstufe, um den Code zu verbessern, mit dem sie arbeiten.
– Sam Newman, freier Berater, Technologe und Autor von »Building Microservices« und »Vom Monolithen zu Microservices«
Kent Beck stellt uns Dutzende leicht verständliche Ideen dazu vor, wie man komplizierten Code in eine einfachere Form bringen kann. Die Ideen sind simpel, und doch werden Sie sich beim Lesen fragen, warum Sie nicht schon selbst darauf gekommen sind. Dieses Buch empfiehlt sich für alle, die auf sauberen und lesbaren Code Wert legen.
– Gergely Orosz, The Pragmatic Engineer
Seit Jahrzehnten haben sich Bücher zum Refactoring auf objektorientierte Top-down-Softwaredesign-Theorien fokussiert. Tidy First? bricht damit und stellt einen realistischen Ansatz vor, bei dem echter, produktiver Code inkrementell verbessert wird.
– Maude Lemaire, Autorin von »Refactoring at Scale«
Seien wir doch ehrlich: 99 % der Softwareentwicklung findet in Brownfield-Projekten statt. Das kann schwierig sein, insbesondere wenn der Code nicht gerade auf Lesbarkeit hin optimiert wurde. In diesem Buch verändert Kent Beck das Ganze, indem er die Beziehung zwischen Menschen durch Code priorisiert. Er zeigt Schritt für Schritt, wie sich Softwaredesign durch kleine, graduelle Änderungen verbessern lässt, sodass der Code nicht nur für Sie, sondern auch für Ihre Mitstreitenden klarer wird.
– Vlad Khononov, Autor von »Einführung in Domain-Driven Design«
Copyright und Urheberrechte:Die durch die dpunkt.verlag GmbH vertriebenen digitalen Inhalte sind urheberrechtlich geschützt. Der Nutzer verpflichtet sich, die Urheberrechte anzuerkennen und einzuhalten. Es werden keine Urheber-, Nutzungs- und sonstigen Schutzrechte an den Inhalten auf den Nutzer übertragen. Der Nutzer ist nur berechtigt, den abgerufenen Inhalt zu eigenen Zwecken zu nutzen. Er ist nicht berechtigt, den Inhalt im Internet, in Intranets, in Extranets oder sonst wie Dritten zur Verwertung zur Verfügung zu stellen. Eine öffentliche Wiedergabe oder sonstige Weiterveröffentlichung und eine gewerbliche Vervielfältigung der Inhalte wird ausdrücklich ausgeschlossen. Der Nutzer darf Urheberrechtsvermerke, Markenzeichen und andere Rechtsvorbehalte im abgerufenen Inhalt nicht entfernen.
Mini-Refactorings für besseres Softwaredesign
Kent Beck
Deutsche Übersetzung vonThomas Demmig
Kent Beck
Lektorat: Ariane Hesse
Übersetzung: Thomas Demmig
Fachliche Unterstützung: Patrick Baumgartner, Technical Agile Coach und Software Crafter bei 42talents und Marco Emrich, Software Architect and Primary Consultant at codecentric AG
Korrektorat: Sibylle Feldmann, www.richtiger-text.de
Satz: III-satz, www.drei-satz.de
Herstellung: Stefanie Weidner
Umschlaggestaltung: Karen Montgomery, Michael Oréal, www.oreal.de
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
ISBN:
978-3-96009-244-5
978-3-96010-841-2
ePub
978-3-96010-842-9
1. Auflage 2024
Translation Copyright © 2024 dpunkt.verlag GmbH
Wieblinger Weg 17
69123 Heidelberg
Authorized German translation of the English edition of Tidy First? ISBN 9781098151249 © 2024 Kent Beck. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.
Dieses Buch erscheint in Kooperation mit O’Reilly Media, Inc. unter dem Imprint »O’REILLY«.
O’REILLY ist ein Markenzeichen und eine eingetragene Marke von O’Reilly Media, Inc. und wird mit Einwilligung des Eigentümers verwendet.
Schreiben Sie uns:
Falls Sie Anregungen, Wünsche und Kommentare haben, lassen Sie es uns wissen: [email protected].
Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.
Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.
Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Übersetzer noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen.
Im Gedenken an Professor Barry Dwolatzky:Geek der Extraklasse, Urgewalt und Inspiration.
Vorwort
Einleitung
Einführung
Teil I: Aufräumereien
1Guard Clauses
2Toter Code
3Symmetrien normalisieren
4Neue Schnittstelle, alte Implementierung
5Lesereihenfolge
6Kohäsionsreihenfolge
7Deklaration und Initialisierung zusammenbringen
8Beschreibende Variablen
9Beschreibende Konstanten
10Explizite Parameter
11Anweisungen gruppieren
12Hilfsroutinen extrahieren
13Ein Haufen
14Erläuternde Kommentare
15Redundante Kommentare entfernen
Teil II: Managen
16Getrenntes Aufräumen
17Verketten
18Batchgrößen
19Rhythmus
20Entwirren
21Vorher, nachher, später, nie
Teil III: Theorie
22Vorteilhafte Beziehungen zwischen Elementen
23Struktur und Verhalten
24Ökonomie: der Wert der Zeit und der Optionalität
25Ein Dollar heute > ein Dollar morgen
26Optionen
27Optionen versus Zahlungsflüsse
28Reversible Strukturänderungen
29Kopplung
30Constantines Äquivalenz
31Kopplung versus Entkopplung
32Kohäsion
33Zusammenfassung
Anhang: Kommentierte Leseliste und Referenzen
Index
Dieses schmale Büchlein, das erste einer Reihe, ist für professionelle Programmierer und Programmiererinnen gedacht – für die Art von Softwareentwicklern mit einem tiefen und geekigen Interesse an ihrem Handwerk und am Verbessern ihrer Arbeit mit wenig Aufwand, aber großer Wirkung. Autor Kent Beck ist solch ein engagierter Profi, der sich um Details kümmert, aber auch einen Blick für übergeordnete Fragen und das große Ganze hat.
Praktizierende Softwareentwicklerinnen und -entwickler interessieren sich oft nur wenig für Theorie, aber Kent weiß, worüber er redet, wenn er Praxis und Theorie in einem Ratgeber zusammenbringt, um Code aufzuräumen, der auf diese Weise sowohl lesbar als auch handhabbar wird.
In der Theorie gibt es keinen Unterschied zwischen Theorie und Praxis – in der Praxis aber schon. Dieser Sinnspruch ist in diversen Variationen weit verbreitet und wurde neben anderen schon fälschlicherweise Albert Einstein und Yogi Berra zugeordnet. Nur einem streberhaften Wortschöpfer (erwischt!) dürfte es wichtig sein, ihn korrekterweise Benjamin Brewster zuzuordnen, einem Yale-Studenten, der ihn im Jahr 1882 im Yale Literature Magazine veröffentlicht hatte. Dank der engagierten Wortfreaks bei QuoteInvestigator.com kann ich dieses geekige Detail im Vertrauen auf das Publikum hier anbieten: Es kommt bei dem Beruf darauf an, die Details richtig zu machen.
Durch das Zusammenbringen von Theorie und Praxis beginnt Kent ganz unten mit kleinen Codeschnipseln und akribischer Aufmerksamkeit für die winzigen Details. Dann arbeitet er sich nach oben vor zu einem weiteren Blickwinkel, der den Prozess des Schaffens saubereren Codes in den Blick nimmt. Sauberer Code, der angesichts unvermeidbarer Änderungen und Korrekturen robuster ist. Bei der Zusammenstellung dieses Leitfadens für die Praxis bezieht sich Kent letztendlich auf die realen wirtschaftlichen Aspekte der Softwareentwicklung und die Theorie der Softwareentwicklung.
Diese Kerntheorie ist einfach: Die Komplexität von Computercode hängt davon ab, wie er aufgeteilt ist, wie gekoppelt diese Teile untereinander und wie kohäsiv sie in sich sind. Die Quelle der Theorie von Kopplung und Kohäsion wird meist dem von mir zusammen mit Ed Yourdon geschriebenen Buch Structured Design (Yourdon Press 1975, Prentice Hall 1979) zugeschrieben, aber es lässt sich auch bis zu einer Konferenz in Cambridge, Massachusetts, im Jahr 1968 zurückverfolgen. Kopplung und Kohäsion haben es fast nicht in die 1979er-Auflage von Prentice Hall geschafft. Die Lektoren hatten versucht, Ed und mich davon zu überzeugen, die zwei Kapitel wegzulassen, weil »niemand an der Theorie interessiert sei«. Zum Glück für die Geschichte der Softwareentwicklung blieben die Autoren standhaft, und die Lektoren lagen falsch. Seitdem hat sich die Theorie in einem halben Jahrhundert Praxis und in Hunderten von Studien und Untersuchungen als gültig erwiesen.
Kopplung und Kohäsion sind einfache Maßstäbe für die Komplexität von Computercode – nicht aus der Perspektive des Computers, der das Programm ausführt, sondern aus der des Menschen, der versucht, den Code zu verstehen. Um ein Programm zu verstehen – sei es, um es zu erstellen, oder sei es, um es zu korrigieren oder anzupassen –, müssen Sie das Stück Code vor sich auf dem Bildschirm genauso verstehen wie die anderen Elemente, mit denen es verbunden ist, die es beeinflusst oder durch die es beeinflusst wird. Es ist einfacher, den aktuellen Code zu verstehen, wenn alles beisammen ist, als Ganzes Sinn hat und das formt, was Psychologinnen und Psychologen als Gestalt bezeichnen. Das ist Kohäsion. Es ist zudem einfacher, den Code im Hinblick auf seine Beziehungen zu anderen Codebereichen zu verstehen, wenn es nur wenige dieser Beziehungen gibt, die recht schwach sind oder stark eingeschränkt. Das ist Kopplung. Kopplung und Kohäsion sind alles, womit sich Ihr Hirn bei komplizierten Systemen beschäftigt.
Sehen Sie? Nett und ordentlich. Das ist die Theorie. Jetzt aber zu den praktischen Details und dem Untermischen von gerade so viel Theorie, dass alles Sinn ergibt. Kent Beck wird Sie auf diesem Weg leiten können.
– Larry ConstantineRowley, Massachusetts, 9. Oktober 2023
Larry Constantine war als Professor an der Universität von Madeira (Portugal) und der University of Technology in Sydney (Australien) tätig. Er ist an mehr als 200 Artikeln und drei Dutzend Büchern beteiligt gewesen – einschließlich des Jolt-Award-Gewinners Software for Use (Addison-Wesley 1999), geschrieben von Lucy Lockwood – und 15 Romanen unter seinem Pseudonym Lior Samson.
»Ich muss diesen Code ändern, aber er ist so unordentlich. Was sollte ich als Erstes tun?«
»Vielleicht sollte ich den Code aufräumen, bevor ich die Änderung vornehme. Vielleicht. Ein bisschen. Oder vielleicht nicht?«
Das sind Fragen, die Sie sich eventuell selbst stellen, und wenn es einfache Antworten darauf gäbe, hätte ich nicht das Gefühl, ein Buch darüber schreiben zu müssen.
Tidy First? beschreibt:
wann Sie unordentlichen Code aufräumen sollten, bevor Sie ändern, was dieser Code tut,
wie Sie unordentlichen Code sicher und effizient aufräumen,
wann Sie damit aufhören, unordentlichen Code aufzuräumen, und
warum das Aufräumen funktioniert.
Softwaredesign ist eine Übung in zwischenmenschlichen Beziehungen. In Tidy First? beginnen wir mit der sprichwörtlichen Person im Spiegel – mit der Beziehung des Programmierers oder der Programmiererin zu sich selbst. Warum nehmen wir uns keine Zeit, uns um uns selbst zu kümmern? Uns die Arbeit zu erleichtern? Warum stürzen wir uns auf das Aufräumen von Code und vergessen dabei Aufgaben, die unseren Anwenderinnen und Anwendern helfen würden?
Tidy First? ist der nächste Schritt bei meiner Mission, Geeks ein sichereres Gefühl zu geben. Es ist auch der erste Schritt bei der Arbeit mit unordentlichem Code. Softwaredesign ist ein mächtiges Werkzeug, mit dem sich viele Schmerzen verringern lassen – wenn man es richtig einsetzt. Falsch verwendet, wird es nur ein weiteres Mittel der Unterdrückung, das die Effektivität von Softwareentwicklung beeinträchtigt.
Tidy First? ist das erste Buch einer Reihe, die sich auf Softwaredesign fokussiert. Ich möchte, dass Softwaredesign zugänglich und wertgeschätzt wird, daher beginne ich mit der Art von Design, die Sie selbst umsetzen können. In den nachfolgenden Bänden wird Softwaredesign dafür eingesetzt, die Beziehungen zwischen den Programmierern und Programmiererinnen in einem Team wiederherzustellen, um dann das ganz große Ding anzugehen: die Beziehung zwischen Business und Technologie. Aber zuerst wollen wir Softwaredesign auf eine Art und Weise verstehen und umsetzen, die uns in der tagtäglichen Arbeit hilft.
Nehmen wir an, Sie hätten eine große Funktion mit vielen Zeilen Code. Bevor Sie sie ändern, schauen Sie sich den Code an, um zu verstehen, was darin passiert. Dabei sehen Sie, wie Sie den Code in kleinere, logisch zusammengehörige Stücke unterteilen können. Extrahieren Sie diese Stücke, räumen Sie auf. Andere Arten von Aufräumarbeiten beinhalten den Einsatz von Guard Clauses sowie das Erklären in Kommentaren und Hilfsfunktionen.
Als Buch setzt Tidy First? das um, was es vorschlägt – die »Aufräumereien« werden in kleinen Häppchen vorgestellt, und es wird vorgeschlagen, wann und wo sie sinnvoll sein können. Statt also zu versuchen, gleich alles komplett auf einmal aufzuräumen, können Sie ein paar Techniken ausprobieren, die für Ihr Problem sinnvoll erscheinen. Tidy First? beginnt zudem damit, die Theorie hinter dem Softwaredesign zu beschreiben: Kopplung, Kohäsion, abgezinste Zahlungsströme und Optionalität.
Dieses Buch ist für Programmiererinnen und Programmierer, Lead Developer, programmierende Softwarearchitekten und technische Manager gedacht. Es ist nicht an eine Programmiersprache gebunden; Entwicklerinnen und Entwickler können die Konzepte in diesem Buch lesen und auf ihre eigenen Projekte anwenden. Dieses Buch setzt voraus, dass die Leserinnen und Leser über einen gewisse Programmiererfahrung verfügen.
Nachdem Sie das Buch gelesen haben, werden Sie Folgendes verstanden haben:
Den fundamentalen Unterschied zwischen Änderungen am Verhalten eines Systems und Änderungen an seiner Struktur.
Die Magie der abwechselnden Investition in Struktur und Verhalten, wenn man als Einzelner oder Einzelne Code verändert.
Die Grundlagen der Theorie, wie Softwaredesign funktioniert und welche Kräfte dabei wirken.
Und Sie werden in der Lage sein:
Ihr eigenes Programmiererlebnis zu verbessern, indem Sie manchmal zuerst aufräumen (und manchmal danach).
Damit zu beginnen, große Änderungen in kleinen, sicheren Schritten vorzunehmen.
Design als eine menschliche Tätigkeit, mit der unterschiedliche Anreize verbunden sind, zu betrachten.
Tidy First? ist in eine Einleitung und drei Hauptteile gegliedert:
Einleitung
Ich beginne mit einer kurzen Beschreibung meiner Motivation, dieses Buch zu schreiben, wie ich dazu kam, für wen es gedacht ist und was Sie erwarten können. Dann steigen wir richtig ein.
Teil I: »Aufräumereien«
Eine Aufräumerei ist wie ein winzig kleines Mini-Refactoring. Jedes kurze Kapitel ist eine Aufräumarbeit. Sehen Sie Code wie diesen, ändern Sie ihn in Code wie jenen. Dann lassen Sie ihn auf die Produktivumgebung los.
Teil II:Managen
Als Nächstes kümmern wir uns um das Managen des Aufräumprozesses. Teil der Aufräumphilosophie ist, dass sie nie ein großes Ding sein sollte. Es ist nichts, das berichtet, verfolgt, vorbereitet oder geplant werden sollte. Sie müssen diesen Code ändern, aber das ist schwierig, weil er so unordentlich ist – also räumen Sie zuerst auf. Selbst als Teil des Tagesgeschäfts ist das trotzdem ein Prozess, der durch Nachdenken besser wird.
Teil III:Theorie
