Code Review in Rust: Was man prüfen und wie man Feedback für Anfänger gibt

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum Code Review in Rust für Anfänger wichtig ist

\n

Code Review ist eine der effektivsten Methoden, um die Projektqualität zu verbessern und das Lernen zu beschleunigen. Für die Sprache Rust, die für ihr strenges Typsystem und ihr einzigartiges Ownership-Modell bekannt ist, wird das Review nicht nur zur Formalität, sondern zur Notwendigkeit. Anfänger machen oft Fehler, die der Compiler nicht abfängt, die aber zu logischen Bugs oder Leistungseinbußen führen können.

\n

In diesem Artikel besprechen wir, worauf man bei einem Code Review in Rust achten sollte, wie man nützliches Feedback gibt und wie man Anfänger nicht durch übermäßige Kritik abschreckt. Das Material ist sowohl für diejenigen nützlich, die zum ersten Mal als Reviewer auftreten, als auch für diejenigen, die lernen möchten, besseren Code zu schreiben.

\n\n

1. Hauptaspekte, die im Rust-Code zu prüfen sind

\n

Ein Code Review in Rust sollte mehrere Schlüsselbereiche abdecken. Nachfolgend eine Checkliste für den angehenden Reviewer.

\n\n

1.1. Ownership und Borrowing

\n

Dies ist das Fundament von Rust. Selbst wenn der Code kompiliert, kann er übermäßige Klonungen oder eine falsche Verwendung von Referenzen enthalten. Prüfen Sie:

\n
    \n
  • Wird &str anstelle von &String verwendet? (Letzteres ist normalerweise überflüssig)
  • \n
  • Gibt es unnötige .clone()-Aufrufe? Wenn eine Funktion z.B. &T akzeptiert, müssen Daten vor dem Aufruf nicht geklont werden.
  • \n
  • Werden Ausleihen korrekt verwendet: &mut T nur, wenn Daten geändert werden müssen.
  • \n
\n
// Schlecht: Übermäßiges Klonen\nfn process(data: &Vec<String>) {\n    for item in data.clone() { // clone nicht nötig\n        println!("{}", item);\n    }\n}\n\n// Gut: Iteration über eine Referenz\nfn process(data: &[String]) {\n    for item in data {\n        println!("{}", item);\n    }\n}
\n\n

1.2. Fehlerbehandlung

\n

Rust verwendet keine Ausnahmen, daher ist eine korrekte Fehlerbehandlung entscheidend. Worauf zu achten ist:

\n
    \n
  • Werden Result und Option anstelle von Panics (.unwrap(), .expect()) verwendet?
  • \n
  • Gibt es eine Fehlerbehandlung mit match oder dem ?-Operator?
  • \n
  • Geht der Fehlerkontext verloren? (Es ist nützlich, map_err oder benutzerdefinierte Fehlertypen zu verwenden)
  • \n
\n
// Schlecht: Panic bei Fehler\nlet file = File::open("config.toml").unwrap();\n\n// Gut: Fehlerweitergabe mit Kontext\nfn read_config() -> Result<String, io::Error> {\n    let mut file = File::open("config.toml")?;\n    let mut contents = String::new();\n    file.read_to_string(&mut contents)?;\n    Ok(contents)\n}
\n\n

1.3. Leistung und Allokationen

\n

Anfänger denken oft nicht an unnötige Allokationen. Achten Sie auf:

\n
    \n
  • Verwendung von Vec, wo ein Array fester Länge ([T; N]) ausreicht.
  • \n
  • Erstellung von Strings mit format! innerhalb von Schleifen – besser mit join oder push_str sammeln.
  • \n
  • Verfrühte Optimierung: Kritisieren Sie Code nicht für Mikro-Allokationen, wenn es sich nicht um einen heißen Pfad handelt.
  • \n
\n\n

2. Wie man Feedback gibt: freundlich, konkret und konstruktiv

\n

Ein Code Review ist kein Wettbewerb, sondern eine Lernmöglichkeit. Ihre Aufgabe ist es, einem Kollegen (oder sich selbst in der Zukunft) zu helfen, besser zu schreiben, nicht zu zeigen, wie klug Sie sind.

\n\n

2.1. Die "Sandwich"-Regel (Lob-Kritik-Lob)

\n

Beginnen Sie positiv: Heben Sie hervor, dass der Code gut strukturiert ist oder dass der Autor match korrekt verwendet hat. Weisen Sie dann auf das Problem hin und schlagen Sie eine Lösung vor. Beenden Sie mit einer aufmunternden Bemerkung.

\n
Beispiel: "Gut, dass du Option anstelle einer Panik verwendest. Einzige Anmerkung: Hier könntest du .unwrap() durch ? ersetzen, um eine Panik bei einem Fehler zu vermeiden. Ansonsten ist der Code hervorragend!"

Blogs

Buchempfehlungen