Tidy First? - Kent Beck - E-Book

Tidy First? E-Book

Kent Beck

0,0

Beschreibung

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:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 116

Veröffentlichungsjahr: 2024

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Stimmen zum Buch

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.

Tidy First?

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:

Print

978-3-96009-244-5

PDF

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.

Inhalt

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

Vorwort

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.

Einleitung

Was ist Tidy First?

»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.

Wer dieses Buch lesen sollte

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.

Was Sie lernen werden

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.

Struktur des Buchs

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