Clean Code in Rust: Prinzipien und Beispiele für Anfänger

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

Clean Code in Rust: Prinzipien und Beispiele für Anfänger

\n

Rust ist eine leistungsstarke Systemprogrammiersprache, die für ihre Leistung und Speichersicherheit bekannt ist. Wie in jeder anderen Sprache ist das Schreiben von sauberem Code (Clean Code) jedoch eine entscheidende Fähigkeit. Sauberer Code ist leichter zu lesen, zu warten und zu erweitern. Für Anfänger in Rust hilft die Beherrschung der Clean-Code-Prinzipien von Anfang an, typische Fehler zu vermeiden und Ihren Code elegant und zuverlässig zu gestalten. In diesem Artikel werden wir die grundlegenden Prinzipien von sauberem Code in Rust anhand konkreter Beispiele erläutern.

\n\n

1. Benennung von Variablen und Funktionen

\n

Ein guter Name sollte die Absicht des Programmierers erklären. In Rust ist es üblich, snake_case für Variablen, Funktionen und Module sowie CamelCase für Typen und Traits zu verwenden.

\n\n

Schlechtes Beispiel:

\n
fn c(a: i32, b: i32) -> i32 {\n    let x = a + b;\n    x\n}
\n\n

Gutes Beispiel:

\n
fn calculate_sum(first_number: i32, second_number: i32) -> i32 {\n    let result = first_number + second_number;\n    result\n}
\n

Verwenden Sie aussagekräftige Namen: user_name statt un, process_data statt pd. Vermeiden Sie Abkürzungen, es sei denn, sie sind allgemein üblich (z. B. idx für Index).

\n\n

2. Kleine Funktionen und Einzelverantwortung

\n

Das Prinzip der Einzelverantwortung (Single Responsibility Principle) besagt: Jede Funktion sollte nur eine Sache tun. Wenn eine Funktion mehrere Aktionen ausführt, ist sie schwer zu testen und zu ändern.

\n\n

Schlechtes Beispiel (Funktion macht zu viel):

\n
fn process_user(user_id: u32) {\n    // Benutzer aus der Datenbank abrufen\n    // Daten validieren\n    // E-Mail senden\n    // Loggen\n    println!("Processing user {}", user_id);\n}
\n\n

Gutes Beispiel (Aufteilung in kleine Funktionen):

\n
fn get_user(user_id: u32) -> User {\n    // Logik zum Abrufen des Benutzers\n    User { id: user_id }\n}\n\nfn validate_user(user: &User) -> bool {\n    // Validierungslogik\n    user.id > 0\n}\n\nfn send_email(user: &User) {\n    // Logik zum Senden der E-Mail\n    println!("Email sent to user {}", user.id);\n}\n\nfn process_user(user_id: u32) {\n    let user = get_user(user_id);\n    if validate_user(&user) {\n        send_email(&user);\n    }\n}
\n

Versuchen Sie, dass eine Funktion in 10-20 Zeilen passt. Wenn sie länger ist, teilen Sie sie auf.

\n\n

3. Fehlerbehandlung: Verwenden Sie Result und Option

\n

Rust fördert die explizite Fehlerbehandlung durch die Typen Result<T, E> und Option<T>. Vermeiden Sie die Verwendung von .unwrap() oder .expect() im Produktionscode – dies führt bei einem Fehler zu einer Panik.

\n\n

Schlechtes Beispiel (gefährliches Extrahieren):

\n
fn read_file(path: &str) -> String {\n    let content = std::fs::read_to_string(path).unwrap(); // Kann abstürzen!\n    content\n}
\n\n

Gutes Beispiel (Fehlerbehandlung):

\n
use std::fs;\n\nfn read_file(path: &str) -> Result<String, std::io::Error> {\n    let content = fs::read_to_string(path)?; // ?-Operator zum Weiterleiten des Fehlers\n    Ok(content)\n}\n\nfn main() {\n    match read_file("data.txt") {\n        Ok(data) => println!("File content: {}", data),\n        Err(e) => eprintln!("Error reading file: {}", e),\n    }\n}
\n

Verwenden Sie den ?-Operator für Kürze, behandeln Sie Fehler jedoch immer auf der obersten Ebene. Für eigene Fehler erstellen Sie Aufzählungen mit dem Trait std::error::Error.

\n\n

4. Kommentare und Dokumentation

\n

Sauberer Code sollte selbstdokumentierend sein. Kommentare erklären das Warum, nicht das Was. Verwenden Sie für die Dokumentation öffentlicher APIs /// (Doc-Kommentare).

\n\n

Schlechtes Beispiel (nutzloser Kommentar):

\n
// Zähler um 1 erhöhen\ncounter += 1;

                
                

Blogs

Buchempfehlungen