jg-appsgemacht-insights

Insight

jg-appsgemacht-insights

Insight

jg-appsgemacht-insights

Insight

jg-appsgemacht-insights

Insight

Was mir beim PR-Reviewen wichtig ist: Codestyles, Best Practices und Clean Code

Was mir beim PR-Reviewen wichtig ist: Codestyles, Best Practices und Clean Code

24.06.2024

PR-Review Flutter
PR-Review Flutter
PR-Review Flutter
PR-Review Flutter

Foto von John Schnobrich auf Unsplash


PR-Reviews, also Pull-Request-Reviews, sind ein wesentlicher Bestandteil des Softwareentwicklungsprozesses. Sie dienen nicht nur der Fehlererkennung, sondern tragen maßgeblich zur Verbesserung der Codequalität und zur Einhaltung von Standards bei. Ein gut durchgeführtes PR-Review kann die Zusammenarbeit im Team fördern, die Wartbarkeit des Codes erhöhen und sicherstellen, dass Best Practices eingehalten werden.


In diesem Artikel teile ich meine Erfahrungen und gebe Einblicke, worauf ich beim PR-Reviewen besonderen Wert lege. Du erfährst, warum Codestyles wichtig sind, wie du Best Practices anmerkst und warum klare Kommunikation unerlässlich ist. Außerdem zeige ich dir, wie direkte Kommentare im Code den Review-Prozess effizienter machen und warum ein Fokus auf Clean Code entscheidend ist.


Durch die Beachtung dieser Aspekte wird nicht nur der Review-Prozess selbst effizienter, sondern auch die Qualität des Endprodukts erheblich verbessert. Ob du nun ein erfahrener Entwickler, Projektmanager oder CTO bist, dieser Artikel bietet dir wertvolle Tipps, um den PR-Review-Prozess in deinem Team zu optimieren.



Codestyles beachten


Einheitliche Codestyles sind das Fundament für einen lesbaren und wartbaren Code. Sie sorgen dafür, dass der Code unabhängig vom Autor immer gleich aussieht und erleichtern somit das Verständnis und die Zusammenarbeit im Team. Ein konsistenter Codestyle ist nicht nur ästhetisch ansprechend, sondern verhindert auch Missverständnisse und erleichtert die Fehlersuche.


Definition von Codestyles


Codestyles umfassen verschiedene Aspekte der Codegestaltung, wie Einrückungen, Namenskonventionen, Verwendung von Leerzeichen, Kommentarstil und Strukturierung von Funktionen und Klassen. Ein gut definierter Codestyle stellt sicher, dass der Code einheitlich und klar strukturiert ist, was die Lesbarkeit und Wartbarkeit erheblich verbessert.


Bedeutung konsistenter Codestyles


Konsistente Codestyles sind aus mehreren Gründen wichtig:

  • Lesbarkeit: Einheitlicher Code ist leichter zu lesen und zu verstehen. Entwickler können sich auf den Inhalt konzentrieren, anstatt sich an unterschiedliche Stile anzupassen.

  • Wartbarkeit: Ein einheitlicher Stil erleichtert es, Änderungen und Erweiterungen vorzunehmen. Neue Teammitglieder können sich schneller einarbeiten, wenn sie sich nicht an verschiedene Stile gewöhnen müssen.

  • Fehlervermeidung: Konsistenz verringert die Wahrscheinlichkeit von Fehlern, die durch unterschiedliche Stile entstehen können. Es ist einfacher, sich auf die Logik des Codes zu konzentrieren, wenn der Stil keine Ablenkung darstellt.


Tools zur Überprüfung von Codestyles


Es gibt verschiedene Tools, die dabei helfen, Codestyles in Flutter-Projekten automatisch zu überprüfen und durchzusetzen. Hier sind einige der bekanntesten und effektivsten Tools:

  • Very Good Linting: Dieses Tool bietet eine Sammlung von Linter-Regeln, die speziell für Dart und Flutter entwickelt wurden. Es überprüft den Code auf Stilfehler und Best Practices und kann an die spezifischen Bedürfnisse deines Projekts angepasst werden. Very Good Linting hilft dabei, konsistente Codestyles im gesamten Projekt sicherzustellen und bietet klare Anweisungen zur Behebung von Verstößen.

  • dart fix --apply: Der Befehl dart fix --apply ist ein weiteres mächtiges Werkzeug zur Verbesserung des Codes. Es analysiert den Code und schlägt automatische Korrekturen vor, um den Stilrichtlinien und Best Practices von Dart zu entsprechen. Durch die Anwendung dieser Korrekturen wird der Code sauberer und konsistenter.

  • Formatter: Der in Flutter integrierte Code-Formatter sorgt dafür, dass der Code automatisch nach den festgelegten Stilrichtlinien formatiert wird. Dies entlastet die Entwickler von der manuellen Anpassung des Codes und stellt sicher, dass der Code einheitlich und lesbar bleibt.

  • CI/CD-Integrationen: Durch die Integration von Codestyle-Checks in die Continuous Integration (CI) und Continuous Deployment (CD) Pipelines kann sichergestellt werden, dass nur Code, der den definierten Stilrichtlinien entspricht, in das Hauptprojekt aufgenommen wird. Tools wie GitHub Actions oder Bitbucket Pipeline können so konfiguriert werden, dass sie Linter und Formatter ausführen, bevor Code in den Hauptzweig gemerged wird.


Die Nutzung dieser Tools trägt maßgeblich dazu bei, dass der Code in Flutter-Projekten einheitlich, lesbar und wartbar bleibt. Indem du Codestyles automatisierst und durchsetzt, kannst du die Qualität und Konsistenz deines Codes erheblich verbessern.

 


Best Practices anmerken


Best Practices sind bewährte Methoden und Techniken, die sich in der Softwareentwicklung als effektiv und effizient erwiesen haben. Sie helfen dabei, qualitativ hochwertigen, wartbaren und skalierbaren Code zu schreiben. Beim PR-Review ist es entscheidend, Best Practices zu erkennen und anzumerken, um die Codequalität kontinuierlich zu verbessern.


Was sind Best Practices?


Best Practices umfassen eine breite Palette von Techniken und Prinzipien, die in der Softwareentwicklung eingesetzt werden, um bestimmte Probleme zu lösen oder um allgemein bessere Ergebnisse zu erzielen. Dazu gehören zum Beispiel:

  • Modularisierung: Aufteilen des Codes in kleine, wiederverwendbare Module oder Funktionen.

  • Dokumentation: Hinzufügen aussagekräftiger Kommentare und Dokumentationen zu komplexen Codestellen.

  • Testbarkeit: Schreiben von Code, der leicht getestet werden kann, und die Implementierung von Unit-Tests.

  • Lesbarkeit: Schreiben von klar verständlichem Code mit aussagekräftigen Variablennamen und gut strukturierten Kontrollflüssen.


Beispiele für Best Practices im Code


Um Best Practices im Code zu veranschaulichen, hier einige konkrete Beispiele:


  1. Modularisierung:

// Schlechte Praxis: Eine große Funktion, die viele Aufgaben erledigt
void processOrder(Order order) {
  // Validierungscode
  // Berechnungscode
  // Speichercode
  // Benachrichtigungscode
}

// Gute Praxis: Aufteilung in kleinere, spezialisierte Funktionen
void processOrder(Order order) {
  validateOrder(order);
  calculateTotal(order);
  saveOrder(order);
  notifyUser(order);
}

void validateOrder(Order order) {
  // Validierungscode
}

void calculateTotal(Order order) {
  // Berechnungscode
}

void saveOrder(Order order) {
  // Speichercode
}

void notifyUser(Order order) {
  // Benachrichtigungscode
}


  1. Testbarkeit:

// Schlechte Praxis: Funktion, die schwer zu testen ist
void processOrder(Order order) {
  if (order.isValid()) {
    // Komplexe Logik hier
  }
}

// Gute Praxis: Abhängigkeiten injizieren und Code testbar machen
void processOrder(Order order, OrderValidator validator) {
  if (validator.isValid(order)) {
    // Komplexe Logik hier
  }
}

class OrderValidator {
  bool isValid(Order order) {
    // Validierungslogik hier
  }
}


Wie man Best Practices effektiv anmerkt


Beim PR-Review ist es wichtig, Best Practices nicht nur zu erkennen, sondern auch konstruktiv und hilfreich anzumerken. Hier sind einige Tipps, wie du dies effektiv tun kannst:

  • Positives Feedback geben: Hebe gute Praktiken hervor, um positives Verhalten zu verstärken.

  • Konstruktive Kritik üben: Formuliere Kritik so, dass sie als Verbesserungsvorschlag verstanden wird, nicht als Vorwurf.

  • Beispiele geben: Zeige konkrete Beispiele oder Alternativen, wie der Code verbessert werden kann.

  • Ressourcen teilen: Verweise auf Dokumentationen, Artikel oder Best-Practice-Guides, die dem Entwickler helfen können, die vorgeschlagenen Änderungen besser zu verstehen und umzusetzen.


Indem du Best Practices anmerkst und förderst, trägst du dazu bei, die Qualität des gesamten Codes zu erhöhen und ein höheres Niveau der Softwareentwicklung in deinem Team zu etablieren. Im nächsten Kapitel werden wir die Bedeutung klarer und eindeutiger Antworten im PR-Review-Prozess näher beleuchten.

 


Klar und eindeutig antworten


Eine der wichtigsten Fähigkeiten beim PR-Review ist die klare und eindeutige Kommunikation. Durch präzises und konstruktives Feedback wird nicht nur die Qualität des Codes verbessert, sondern auch die Zusammenarbeit im Team gestärkt. Es ist entscheidend, dass die Rückmeldungen klar verständlich sind und direkt auf die relevanten Aspekte des Codes eingehen.


Bedeutung klarer Kommunikation


Klare Kommunikation im PR-Review-Prozess ist aus mehreren Gründen wichtig:

  • Missverständnisse vermeiden: Präzise Rückmeldungen verhindern Missverständnisse und stellen sicher, dass der Entwickler genau weiß, was geändert werden muss.

  • Effizienz steigern: Je klarer das Feedback, desto schneller kann der Entwickler die notwendigen Anpassungen vornehmen, was den gesamten Review-Prozess beschleunigt.

  • Teamkultur fördern: Respektvolle und konstruktive Rückmeldungen tragen zu einer positiven Teamkultur bei und motivieren die Entwickler, sich weiter zu verbessern.


Tipps für präzise Rückmeldungen


Um sicherzustellen, dass dein Feedback klar und hilfreich ist, solltest du folgende Tipps beachten:


  1. Sei spezifisch: Vermeide allgemeine Kommentare wie "Der Code ist nicht gut". Erkläre stattdessen genau, welche Teile des Codes verbessert werden müssen und warum.

// Allgemein
"Der Code ist nicht effizient."

// Spezifisch
"Die Schleife in Zeile 23 könnte optimiert werden,"
"indem du ein Set anstelle einer Liste verwendest,"
"um die Look-up-Zeit zu verringern."


  1. Gib Beispiele: Zeige konkrete Beispiele oder Alternativen, wie der Code verbessert werden kann.

// Beispiel
"Statt die Liste manuell zu sortieren, "
"könntest du die eingebaute sort()-Methode verwenden, die effizienter ist:"
List<String> names = ['Alice', 'Bob', 'Charlie'];
names.sort(); // Eingebaute Methode zur Sortierung


  1. Nutze positive Sprache: Beginne mit positivem Feedback, bevor du auf Verbesserungsvorschläge eingehst. Dies hilft, die Kritik besser anzunehmen und motiviert den Entwickler.

"Die Struktur deiner Funktion ist sehr klar und gut nachvollziehbar." 
"Eine kleine Verbesserung wäre, die Variablennamen etwas aussagekräftiger "
"zu gestalten, um die Lesbarkeit weiter zu erhöhen."


  1. Sei respektvoll und konstruktiv: Vermeide negative oder herabwürdigende Kommentare. Konzentriere dich darauf, wie der Code verbessert werden kann, und respektiere die Arbeit des anderen.

// Negativ
"Dieser Code ist schlecht geschrieben."

// Konstruktiv
"Der aktuelle Ansatz funktioniert, aber "
"es gibt eine effizientere Methode, um dies zu erreichen."
"Hier ist ein Vorschlag, wie es gemacht werden könnte..."


Beispiele für gute und schlechte Rückmeldungen


  • Schlechte Rückmeldung:

"Das ist falsch. Ändere es."


  • Gute Rückmeldung:

"Die Implementierung funktioniert, aber es gibt einen besseren Weg," 
"dies zu erreichen. Versuche, die Map-Methode zu verwenden," 
"um die Liste zu transformieren, anstatt eine manuelle Schleife zu schreiben." 
"Hier ist ein Beispiel..."


Durch klare und eindeutige Rückmeldungen im PR-Review-Prozess hilfst du deinem Team, effizienter zu arbeiten und die Qualität des Codes kontinuierlich zu verbessern. Im nächsten Kapitel werden wir die Vorteile und Best Practices für direkte Kommentare im Code untersuchen.



Direkt im Code kommentieren


Direkte Kommentare im Code sind ein mächtiges Werkzeug im PR-Review-Prozess. Sie ermöglichen es, spezifisches Feedback genau dort zu geben, wo es benötigt wird, und machen den Review-Prozess effizienter und präziser. Richtig eingesetzt, können sie erheblich zur Verbesserung der Codequalität und zur Klärung von Missverständnissen beitragen.


Vorteile direkter Code-Kommentare


Direkte Code-Kommentare bieten mehrere Vorteile:

  • Präzision: Sie ermöglichen es, Feedback direkt an der relevanten Stelle im Code zu geben, wodurch Missverständnisse minimiert werden.

  • Kontext: Kommentare im Code bieten den notwendigen Kontext für das Feedback, da der Reviewer den Codeabschnitt direkt vor sich hat.

  • Nachvollziehbarkeit: Spätere Betrachter des Codes können die Kommentare nachvollziehen und verstehen, warum bestimmte Änderungen vorgenommen wurden.

  • Effizienz: Entwickler können das Feedback schneller umsetzen, da sie genau wissen, welche Zeilen oder Abschnitte gemeint sind.


Direkte Kommentare im Code sind ein essenzielles Element eines effektiven PR-Review-Prozesses. Im nächsten Kapitel werden wir uns mit dem Konzept des Clean Code beschäftigen und wie man dieses Prinzip im Review-Prozess anwenden kann.


 

Blick auf Clean Code


Clean Code ist ein Konzept, das darauf abzielt, Code so zu schreiben, dass er leicht verständlich, wartbar und erweiterbar ist. Es geht darum, klaren, konsistenten und logischen Code zu schreiben, der von anderen Entwicklern leicht gelesen und verstanden werden kann. Beim PR-Review spielt das Konzept des Clean Codes eine zentrale Rolle, da es hilft, langfristig die Qualität und Wartbarkeit des Codes zu gewährleisten.


Prinzipien von Clean Code


Die Prinzipien von Clean Code umfassen verschiedene Aspekte der Codegestaltung und -strukturierung. Einige der wichtigsten Prinzipien sind:

  1. Lesbarkeit: Code sollte leicht zu lesen und zu verstehen sein. Dies umfasst klare Namenskonventionen, sinnvolle Kommentare und eine logische Struktur.

  2. Konsistenz: Verwende konsistente Stile und Konventionen im gesamten Code. Dies erleichtert die Lesbarkeit und Wartbarkeit.

  3. Einfachheit: Halte den Code so einfach wie möglich. Vermeide unnötige Komplexität und konzentriere dich auf einfache, klare Lösungen.

  4. Modularität: Teile den Code in kleine, wiederverwendbare Module oder Funktionen. Dies verbessert die Wartbarkeit und Wiederverwendbarkeit des Codes.

  5. Dokumentation: Schreibe sinnvolle Kommentare und Dokumentationen, um komplexe Logik oder ungewöhnliche Implementierungen zu erklären.


Wie man Clean Code im Review-Prozess fördert


Um Clean Code im PR-Review-Prozess zu fördern, solltest du auf folgende Aspekte achten:

  1. Klarheit und Einfachheit:

// Komplex und schwer verständlich
double calculateComplexValue(double x, double y) {
  return Math.pow((x + y), 2) - Math.sqrt(x * y);
}

// Einfacher und klarer
double calculateSumOfSquares(double x, double y) {
  return (x * x) + (y * y);
}


  1. Klare Namensgebung: Verwende aussagekräftige Variablen- und Funktionsnamen.

// Schlechte Namensgebung
double f(double a, double b) {
  return a + b;
}

// Bessere Namensgebung
double addNumbers(double firstNumber, double secondNumber) {
  return firstNumber + secondNumber;
}


  1. Modularisierung:

// Nicht modular
void processOrder(Order order) {
  // Validierungscode
  // Berechnungscode
  // Speicher- und Benachrichtigungscode
}

// Modular
void processOrder(Order order) {
  validateOrder(order);
  calculateOrderTotal(order);
  saveAndNotify(order);
}

void validateOrder(Order order) {
  // Validierungscode
}

void calculateOrderTotal(Order order) {
  // Berechnungscode
}

void saveAndNotify(Order order) {
  // Speicher- und Benachrichtigungscode
}


  1. Vermeide Duplikationen: Halte den Code DRY (Don't Repeat Yourself), indem du wiederholte Logik in Funktionen oder Module auslagerst.

// Duplizierter Code
void sendWelcomeEmail(User user) {
  Email email = new Email(user.email);
  email.subject = "Welcome!";
  email.body = "Welcome to our platform, " + user.name;
  email.send();
}

void sendPasswordResetEmail(User user) {
  Email email = new Email(user.email);
  email.subject = "Password Reset";
  email.body = "Click the link to reset your password.";
  email.send();
}

// DRY Prinzip
void sendEmail(User user, String subject, String body) {
  Email email = new Email(user.email);
  email.subject = subject;
  email.body = body;
  email.send();
}

void sendWelcomeEmail(User user) {
  sendEmail(user, "Welcome!", "Welcome to our platform, " + user.name);
}

void sendPasswordResetEmail(User user) {
  sendEmail(user, "Password Reset", "Click the link to reset your password.");
}


Häufige Probleme und Lösungen im Clean Code


  1. Lange Funktionen: Lange Funktionen sind schwer zu verstehen und zu warten. Teile sie in kleinere, fokussierte Funktionen auf.

// Lange Funktion
void processOrder(Order order) {
  if (order.isValid()) {
    calculateTotal(order);
    saveOrder(order);
    notifyUser(order);
  }
}

// Aufgeteilt in kleinere Funktionen
void processOrder(Order order) {
  if (isOrderValid(order)) {
    handleOrderProcessing(order);
  }
}

bool isOrderValid(Order order) {
  // Validierungslogik
}

void handleOrderProcessing(Order order) {
  calculateTotal(order);
  saveOrder(order);
  notifyUser(order);
}


  1. Unklare Kommentare: Kommentare sollten klar und prägnant sein. Vermeide unnötige Kommentare, die den Code nur wiederholen.

// Unklarer Kommentar
// This method calculates the sum
int add(int a, int b) {
  return a + b;
}

// Klarer Kommentar
// Adds two integers and returns the result
int add(int a, int b) {
  return a + b;
}


Indem du diese Prinzipien und Best Practices im PR-Review-Prozess anwendest, kannst du sicherstellen, dass der Code nicht nur funktioniert, sondern auch sauber, wartbar und erweiterbar ist. Clean Code ist eine Investition in die Zukunft des Projekts und erleichtert die Arbeit für alle Beteiligten. Im nächsten Kapitel werden wir die wichtigsten Punkte zusammenfassen und die Bedeutung guter PR-Reviews für die Codequalität hervorheben.

 


Fazit


Ein gut durchgeführter PR-Review-Prozess ist entscheidend für die langfristige Qualität und Wartbarkeit eines Projekts. Durch die Beachtung von Codestyles, das Anmerken von Best Practices, klare und eindeutige Kommunikation, direkte Kommentare im Code und den Fokus auf Clean Code kannst du sicherstellen, dass der Code nicht nur funktional, sondern auch sauber und effizient ist.


Zusammenfassung der wichtigsten Punkte

  1. Codestyles beachten: Konsistente Codestyles verbessern die Lesbarkeit und Wartbarkeit des Codes. Tools wie Linters und Formatter helfen, diese Standards durchzusetzen.

  2. Best Practices anmerken: Erkenne und fördere Best Practices, um die Qualität des Codes kontinuierlich zu verbessern. Gib konstruktives Feedback und konkrete Beispiele.

  3. Klar und eindeutig antworten: Klare Kommunikation ist entscheidend, um Missverständnisse zu vermeiden und den Review-Prozess effizient zu gestalten. Sei spezifisch und konstruktiv in deinen Rückmeldungen.

  4. Direkt im Code kommentieren: Nutze direkte Kommentare im Code, um präzises und kontextbezogenes Feedback zu geben. Tools wie GitHub und GitLab unterstützen diesen Ansatz effektiv.

  5. Blick auf Clean Code: Fördere die Prinzipien von Clean Code, um wartbaren, lesbaren und erweiterbaren Code zu schreiben. Achte auf Klarheit, Konsistenz und Modularität.


Bedeutung guter PR-Reviews für die Codequalität


Gute PR-Reviews sind mehr als nur ein Mittel zur Fehlererkennung. Sie sind eine Gelegenheit zur Weiterbildung, zur Förderung von Best Practices und zur Stärkung der Teamkultur. Durch konstruktives Feedback und die Einhaltung von Standards wird nicht nur die Qualität des aktuellen Codes verbessert, sondern auch eine Basis für zukünftige Entwicklungen geschaffen.


Indem du die hier vorgestellten Prinzipien und Methoden anwendest, kannst du sicherstellen, dass dein Team kontinuierlich qualitativ hochwertigen Code produziert. Dies führt nicht nur zu besseren Produkten, sondern auch zu einer effizienteren und zufriedenstellenderen Zusammenarbeit im Team.


Ermutige dein Team, diese Tipps umzusetzen und die PR-Review-Prozesse stetig zu verbessern. So trägst du maßgeblich dazu bei, dass der Code robust, sauber und zukunftssicher ist.

Zu allen Insights

Dein planbarer App-Entwickler

für Flutter Apps

“Flutter and the related logo are trademarks of Google LLC. We are not endorsed by or affiliated with Google LLC.”

Copyright ©2024. Julian Giesen. Alle Rechte vorbehalten.

Dein planbarer App-Entwickler

für Flutter Apps

Copyright ©2024. Julian Giesen.

Alle Rechte vorbehalten.

“Flutter and the related logo are trademarks of Google LLC. We are not endorsed by or affiliated with Google LLC.”

Dein planbarer App-Entwickler

für Flutter Apps

“Flutter and the related logo are trademarks of Google LLC. We are not endorsed by or affiliated with Google LLC.”

Copyright ©2024. Julian Giesen. Alle Rechte vorbehalten.