Ist es hilfreich, zufällige Codefragmente zu betrachten, um die Qualität eines Projekts schnell zu bestimmen?


8

Um eine Vorstellung von der Qualität eines Projekts zu bekommen, das ich noch nie gesehen habe (normalerweise Open-Source-Projekte, über deren Verwendung ich nachdenke oder nicht), beginne ich häufig damit, zufällige Dateien zu öffnen und feine Details des Codes zu betrachten.

Ich suche Dinge wie:

  • Stil (folgt er akzeptierten Konventionen für die Sprache und ist er konsistent)
  • Qualität und Konsistenz der Kommentare
  • Allgemeine sprachspezifische Fallstricke (z. B. konsequent nicht ===in Javascript verwendet)
  • Sieht es logisch strukturiert aus ?

Ich finde, dies gibt mir eine gute Vorstellung von den Fähigkeiten der Entwickler, die den Code geschrieben haben, auch wenn ich absolut nichts darüber weiß, was der Code tun soll.

Halten die Leute das für nützlich? Was muss man berücksichtigen, um die Qualität der Codebasis eines Projekts schnell beurteilen zu können, vorausgesetzt, man weiß nicht, wie es tatsächlich funktioniert?


+1: Gute Frage. Wenn ein Unternehmen erworben wird, werden manchmal seine Software-Assets auf diese Weise bewertet / bewertet.
Jim G.

1
Es hilft zwar, bestimmt aber nicht die Gesamtqualität. Ein brillanter Programmierer, der unter einem dummen Manager arbeitet, wird großartigen Code für die schreckliche Architektur des Projekts schreiben. Jedes Modul wird großartig sein, aber die Art und Weise, wie sie interagieren, wird ein nicht behebbarer Engpass sein. Neben der Überprüfung der Codequalität benötigen Sie einen breiteren Blick.
SF.

@ SF. Ich wünschte, ich könnte Ihren Kommentar positiv bewerten +10; Ich hatte das "Vergnügen", an einer solchen Software zu arbeiten, bei der die einzelnen Funktionen / Module in Ordnung aussehen, aber es gab einige böse Fehler in der Art und Weise, wie sie interagierten (hauptsächlich aufgrund der Art und Weise, wie asynchrone Dinge behandelt wurden).
Paul

Antworten:


8

Wie einfach wäre es für mich, einen Fehler in diesem Code zu beheben?

Immer wenn ich auf eine neue Codebasis stoße, stelle ich mir diese Frage.

Wenn ich mich schnell mit dem Code vertraut mache, kann ich Gemeinsamkeiten mit den Entwicklern identifizieren, die ihn erstellt haben. Ich neige dazu, Folgendes zu suchen (in keiner bestimmten Reihenfolge):

  • konsequente Verwendung von Namenskonventionen
  • eine Abneigung gegen die Komplexität von Code - unter Einhaltung des KISS-Prinzips
  • Unit-Tests, die sofort funktionieren
  • Eine kurze Readme-Datei, die das Projekt mit hilfreichen Hinweisen zum Verständnis beschreibt
  • gute Kommentare
  • gegebenenfalls Verwendung von Entwurfsmustern
  • konsistenter Stil in Kommentaren und Code-Layout
  • Verwendung bekannter und angesehener unterstützender Bibliotheken (z. B. Boost, Guava usw.)
  • Vorhandensein von Sprachsprachen

Je mehr der oben genannten vorhanden sind, desto mehr Vertrauen habe ich in die Fähigkeiten und Erfahrungen der Entwickler, so dass bei der unvermeidlichen WTF?! Moment tritt ein Ich bin viel eher geneigt, nach einem Mangel an Verständnis für die Problemdomäne zu suchen, als anzunehmen, dass der ursprüngliche Entwickler einen Fehler gemacht hat.


+1 Ich habe vergessen, das bisschen über Bibliotheken aufzunehmen, ich suche auch danach.
Flash

3

Wenn Sie nur eine Auswahl treffen, machen Sie es wahrscheinlich falsch. :) Abgesehen davon handelt es sich im Wesentlichen um eine Zufallsstichprobe , ein ziemlich seriöser Ansatz, um in Fällen, wie Sie sie beschreiben, Informationen zu sammeln. Weitere wissenschaftliche Details dazu finden Sie in der Monte-Carlo-Methode .

In Bezug auf Dinge zu suchen, denken Sie daran zu finden, zu studieren und an Ihre spezifischen Schneiderei braucht einige altbewährte - Checkliste.


Einige andere Aspekte, die bei der Bewertung eines Projekts berücksichtigt werden sollten, sind nachstehend aufgeführt ( Checkliste zusammengefasst aus meinen bisherigen Erfahrungen ):

  • Releases (zusammen mit Changelog), Versionierung und Veröffentlichungsdisziplin
    Es ist im Allgemeinen viel einfacher, Probleme zu untersuchen, wenn man feststellt, dass in Release 1.2.3 ein Fehler gefunden wurde, der zum Download verfügbar ist,some URL als vor zwei Jahren, als mir jemand eine E-Mail mit angehängter Binärdatei gesendet hat .

  • Entwicklerdokumentation, API-Referenz und Codebeispiele
    Hilft zu vermeiden, dass das Rad neu erfunden und die Grundlagen durch Ausprobieren erlernt werden.
    Beachten Sie, dass diese für eine schnelle Studie auch zufällig ausgewählt werden können .

  • Fehlerverfolgung
    Wenn es überhaupt keine Verfolgung gibt, ist dies eine große rote Fahne. Wenn es eine gibt, sollten Sie sie schnell mit demselben Zufallsstichprobenverfahren wie für den Quellcode überprüfen

  • Positives Feedback
    Informieren Sie sich über Projektbenutzer und versuchen Sie, eine zufällige Stichprobe ihres Feedbacks zu erstellen.


1

Ich denke, diese Methode zeigt eher Styling-Fähigkeiten und die Fähigkeit, Code lesbar zu machen, aber sie sagt nichts über logische, analytische Fähigkeiten zur Problemlösung der Entwickler aus, die an dem Code arbeiten.

Wenn Sie also Code auf diese Weise analysieren, erhalten Sie nur Informationen darüber, wie "gut" der Code aussieht und ob er lesbar ist oder nicht. Sie haben jedoch noch keine Ahnung, ob der Code optimiert ist, ob er gut funktioniert, ob er gut strukturiert ist usw.

Die Eigenschaften, auf die Sie achten, sind sehr wichtig. Sie zeigen, ob der Code lesbar und wartbar ist. Aber es gibt viele Programmierer, die hervorragende Lösungen anbieten, aber nicht wirklich auf Kommentare und Styling achten (was meiner Meinung nach viel einfacher zu lernen ist als das Programmieren selbst).


0

Ja, ich denke das ist eine gute Idee. Projekte, die schlecht geschrieben sind, werden eher abgebrochen.

Aber stützen Sie Ihre Entscheidung nicht nur darauf. Imho Quellcode-Verlauf und Anzahl der Committer sind ein weitaus wichtigerer Faktor.


0

Ich denke, kleine Codeabschnitte zu betrachten ist eine großartige Möglichkeit - wenn sie gut codiert sind, Variablen / Klassen / Methoden gut benannt sind und gut kommentiert sind, sollte es einfach sein zu verstehen, was ein kleiner Abschnitt tut und wozu er dient. Wenn Sie große Schwierigkeiten haben, einen kleinen Block zu verstehen (wie alles, was von Klammer zu Klammer geht), ist er wahrscheinlich nicht so gut codiert.


-1

Wenn die Stichproben nicht zahlreich und groß sind, besteht eine sehr gute Chance, dass Sie keinen guten Querschnitt der Codebasis erhalten. Sie könnten entweder leicht mit den wenigen guten Stücken oder den wenigen schlechten Äpfeln enden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.