Skip to content

Commit 46bd0eb

Browse files
authored
Merge pull request #408 from damoasda/master
Refactoring verwenden
2 parents ec787bd + 8b4510e commit 46bd0eb

6 files changed

Lines changed: 43 additions & 46 deletions

src/SUMMARY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
- [Ein E/A-Projekt: Ein Kommandozeilenprogramm erstellen](ch12-00-an-io-project.md)
6464
- [Kommandozeilenargumente entgegennehmen](ch12-01-accepting-command-line-arguments.md)
6565
- [Eine Datei einlesen](ch12-02-reading-a-file.md)
66-
- [Refaktorierung um die Modularität und Fehlerbehandlung zu verbessern](ch12-03-improving-error-handling-and-modularity.md)
66+
- [Refactoring, um die Modularität und Fehlerbehandlung zu verbessern](ch12-03-improving-error-handling-and-modularity.md)
6767
- [Funktionalität mit testgetriebener Entwicklung hinzufügen](ch12-04-testing-the-librarys-functionality.md)
6868
- [Mit Umgebungsvariablen arbeiten](ch12-05-working-with-environment-variables.md)
6969
- [Fehler zur Standardfehlerausgabe umleiten](ch12-06-writing-to-stderr-instead-of-stdout.md)

src/ch05-02-example-structs.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ und überschaubarer, Breite und Höhe zusammenzufassen. Eine Möglichkeit dazu
7070
haben wir bereits im Abschnitt [„Der Tupel-Typ“][the-tuple-type] in Kapitel 3
7171
vorgestellt: Der Einsatz von Tupeln.
7272

73-
### Refaktorierung mit Tupeln
73+
### Refactoring mit Tupeln
7474

7575
Listing 5-9 zeigt eine weitere Version unseres Programms, die Tupel verwendet.
7676

@@ -108,7 +108,7 @@ herauszufinden und im Kopf zu behalten, wenn sie unseren Code verwenden würden.
108108
Da wir die Bedeutung unserer Daten nicht in unseren Code übertragen haben, ist
109109
es jetzt einfacher, Fehler zu machen.
110110

111-
### Refaktorierung mit Strukturen
111+
### Refactoring mit Strukturen
112112

113113
Verwenden wir Strukturen, um durch die Benennung der Daten deren Bedeutung
114114
anzugeben. Wir können das verwendete Tupel in eine Struktur mit einem Namen

src/ch12-03-improving-error-handling-and-modularity.md

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## Refaktorierung um die Modularität und Fehlerbehandlung zu verbessern
1+
## Refactoring, um die Modularität und Fehlerbehandlung zu verbessern
22

33
Um unser Programm zu verbessern, werden wir vier Probleme beheben, die mit der
44
Struktur des Programms und dem Umgang mit potenziellen Fehlern zu tun haben.
@@ -38,7 +38,7 @@ Wenn sich der gesamte Fehlerbehandlungscode an einer Stelle befindet, wird auch
3838
sichergestellt, dass wir Meldungen ausgeben, die für unsere Endbenutzer
3939
aussagekräftig sind.
4040

41-
Lass uns diese vier Probleme angehen, indem wir unser Projekt refaktorieren.
41+
Lass uns diese vier Probleme mittels Refactoring angehen.
4242

4343
### Trennen der Zuständigkeiten in Binärprojekten
4444

@@ -575,15 +575,14 @@ Großartig! Diese Ausgabe ist viel benutzerfreundlicher.
575575

576576
### Extrahieren von Logik aus `main`
577577

578-
Da wir mit dem Refaktorieren des Konfigurations-Parsers nun fertig sind, wollen
579-
wir uns der Logik des Programms zuwenden. Wie wir in [„Trennen der
580-
Zuständigkeiten in Binärprojekten“][trennen-der-zustaendigkeiten] erklärt
581-
haben, werden wir eine Funktion namens `run` extrahieren, die die gesamte Logik
582-
enthält, die sich derzeit in der Funktion `main` befindet und nicht mit dem
583-
Aufsetzen der Konfiguration oder dem Behandeln von Fehlern zu tun hat. Wenn wir
584-
fertig sind, wird die Funktion `main` übersichtlich und leicht zu verifizieren
585-
sein. Zudem werden wir in der Lage sein, Tests für all die andere Logik zu
586-
schreiben.
578+
Da wir mit dem Refactoring des Konfigurations-Parsers fertig sind, wollen wir
579+
uns der Logik des Programms zuwenden. Wie wir in [„Trennen der Zuständigkeiten
580+
in Binärprojekten“][trennen-der-zustaendigkeiten] erklärt haben, werden wir eine
581+
Funktion namens `run` extrahieren, die die gesamte Logik enthält, die sich
582+
derzeit in der Funktion `main` befindet und nicht mit dem Aufsetzen der
583+
Konfiguration oder dem Behandeln von Fehlern zu tun hat. Wenn wir fertig sind,
584+
wird die Funktion `main` übersichtlich und leicht zu verifizieren sein. Zudem
585+
werden wir in der Lage sein, Tests für all die andere Logik zu schreiben.
587586

588587
Listing 12-11 zeigt die extrahierte Funktion `run`. Im Moment machen wir nur
589588
die kleine, inkrementelle Verbesserung durch Extrahieren der Funktion. Wir sind

src/ch12-04-testing-the-librarys-functionality.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Softwareentwicklungstechnik folgt diesen Schritten:
1414
1. Schreibe einen Test, der fehlschlägt, und führe ihn aus, um sicherzustellen,
1515
dass er aus dem von dir erwarteten Grund fehlschlägt.
1616
2. Schreibe oder modifiziere gerade genug Code, um den neuen Test zu bestehen.
17-
3. Refaktoriere den Code, den du gerade hinzugefügt oder geändert hast, und
17+
3. Refactoring des Codes, den du gerade hinzugefügt oder geändert hast, und
1818
stelle sicher, dass die Tests weiterhin bestanden werden.
1919
4. Wiederhole ab Schritt 1!
2020

@@ -330,13 +330,13 @@ test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; fini
330330

331331
Unser Test war erfolgreich, also wissen wir, dass der Code funktioniert!
332332

333-
An diesem Punkt könnten wir Möglichkeiten für eine Refaktorierung der
334-
Implementierung der Suchfunktion in Betracht ziehen, während die Tests
335-
weiterlaufen, um die gleiche Funktionalität zu erhalten. Der Code in der
333+
An diesem Punkt könnten wir Möglichkeiten zum Refactoring der
334+
Suchfunktion-Implementierung in Betracht ziehen, während die Tests weiter
335+
funktionieren und die gleiche Funktionalität sicherstellen. Der Code in der
336336
Suchfunktion ist nicht allzu schlecht, aber er macht sich einige nützliche
337337
Funktionen der Iteratoren nicht zunutze. Wir kehren zu diesem Beispiel in
338-
[Kapitel 13][ch13-iterators] zurück, wo wir Iteratoren im Detail untersuchen
339-
und uns ansehen, wie man sie verbessern kann.
338+
[Kapitel 13][ch13-iterators] zurück, wo wir Iteratoren im Detail untersuchen und
339+
uns ansehen, wie man sie verbessern kann.
340340

341341
Jetzt sollte das gesamte Programm funktionieren! Lass es uns ausprobieren,
342342
zunächst mit einem Wort, das genau eine Zeile aus dem Emily-Dickinson-Gedicht

src/ch12-06-writing-to-stderr-instead-of-stdout.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,13 @@ landen. Das werden wir ändern.
5252

5353
### Fehler auf der Standardfehlerausgabe ausgeben
5454

55-
Wir werden den Code in Listing 12-24 verwenden, um zu ändern, wie
56-
Fehlermeldungen ausgegeben werden. Aufgrund der Refaktorierung, die wir früher
57-
in diesem Kapitel vorgenommen haben, befindet sich der gesamte Code, der
58-
Fehlermeldungen ausgibt, in einer einzigen Funktion, nämlich der Funktion
59-
`main`. Die Standardbibliothek stellt das Makro `eprintln!` zur Verfügung, das
60-
in die Standardfehlerausgabe schreibt. Lass uns also die beiden Stellen, an
61-
denen wir `println!` aufgerufen haben, um Fehler auszugeben, ändern und
62-
stattdessen `eprintln!` verwenden.
55+
Wir werden den Code in Listing 12-24 verwenden und abändern, wie Fehlermeldungen
56+
ausgegeben werden. Aufgrund unseres Refactorings früher in diesem Kapitel
57+
befindet sich der gesamte Code, der Fehlermeldungen ausgibt, in einer einzigen
58+
Funktion, nämlich der Funktion `main`. Die Standardbibliothek stellt das Makro
59+
`eprintln!` zur Verfügung, das in die Standardfehlerausgabe schreibt. Lass uns
60+
also die beiden Stellen, an denen wir `println!` aufgerufen haben, um Fehler
61+
auszugeben, ändern und stattdessen `eprintln!` verwenden.
6362

6463
<span class="filename">Dateiname: src/main.rs</span>
6564

src/ch16-00-concurrency.md

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,23 @@ werden immer wichtiger, da immer mehr Computer die Vorteile mehrerer
99
Prozessoren nutzen. In der Vergangenheit war die Programmierung in diesen
1010
Bereichen schwierig und fehleranfällig: Rust hofft, das ändern zu können.
1111

12-
Ursprünglich dachte das Rust-Team, dass das Gewährleisten von
13-
Speichersicherheit (memory safety) und das Verhindern von
14-
Nebenläufigkeitsproblemen (concurrency problems) zwei separate
15-
Herausforderungen seien, die mit unterschiedlichen Methoden gelöst werden
16-
müssten. Im Laufe der Zeit entdeckte das Team, dass Eigentümerschaft
17-
(ownership) und Typsysteme ein leistungsstarkes Instrumentarium zur Bewältigung
18-
von Speichersicherheits- _und_ Nebenläufigkeitsproblemen sind! Durch das Nutzen
19-
der Eigentümerschaft und Typprüfung werden viele Nebenläufigkeitsfehler zu
20-
Kompilierzeitfehlern in Rust anstatt Laufzeitfehlern. Anstatt dass du viel Zeit
21-
damit verbringen musst, die genauen Umstände zu reproduzieren, unter denen ein
22-
Laufzeit-Nebenläufigkeitsfehler auftritt, wird der fehlerhafte Code nicht
23-
kompilieren und einen Fehler anzeigen, der das Problem erklärt. Dadurch kannst
24-
du deinen Code reparieren, während du daran arbeitest, und nicht möglicherweise
25-
erst, nachdem er in Produktion ausgeliefert wurde. Wir haben diesem Aspekt von
26-
Rust den Spitznamen _furchtlose Nebenläufigkeit_ (fearless concurrency)
27-
gegeben. Die furchtlose Nebenläufigkeit ermöglicht es dir, Code zu schreiben,
28-
der frei von subtilen Fehlern und leicht zu refaktorieren ist, ohne neue
29-
Fehler zu erzeugen.
12+
Ursprünglich dachte das Rust-Team, dass das Gewährleisten von Speichersicherheit
13+
(memory safety) und das Verhindern von Nebenläufigkeitsproblemen (concurrency
14+
problems) zwei separate Herausforderungen seien, die mit unterschiedlichen
15+
Methoden gelöst werden müssten. Im Laufe der Zeit entdeckte das Team, dass
16+
Eigentümerschaft (ownership) und Typsysteme ein leistungsstarkes Instrumentarium
17+
zur Bewältigung von Speichersicherheits- _und_ Nebenläufigkeitsproblemen sind!
18+
Durch das Nutzen der Eigentümerschaft und Typprüfung werden viele
19+
Nebenläufigkeitsfehler zu Kompilierzeitfehlern in Rust anstatt Laufzeitfehlern.
20+
Anstatt dass du viel Zeit damit verbringen musst, die genauen Umstände zu
21+
reproduzieren, unter denen ein Laufzeit-Nebenläufigkeitsfehler auftritt, wird
22+
der fehlerhafte Code nicht kompilieren und einen Fehler anzeigen, der das
23+
Problem erklärt. Dadurch kannst du deinen Code reparieren, während du daran
24+
arbeitest, und nicht möglicherweise erst, nachdem er in Produktion ausgeliefert
25+
wurde. Wir haben diesem Aspekt von Rust den Spitznamen _furchtlose
26+
Nebenläufigkeit_ (fearless concurrency) gegeben. Die furchtlose Nebenläufigkeit
27+
ermöglicht es dir, Code zu schreiben, der frei von subtilen Fehlern und mittels
28+
Refactoring leicht zu ändern ist, ohne neue Fehler zu erzeugen.
3029

3130
> Anmerkung: Der Einfachheit halber werden wir viele der Probleme als
3231
> _nebenläufig_ bezeichnen, anstatt präziser zu sein, indem wir _nebenläufig

0 commit comments

Comments
 (0)