15 Stimmen

Wie liest man ein bestehendes Rails-Projekt?

Wenn Sie mit der Arbeit an einem bestehenden Rails-Projekt beginnen, was sind die Schritte, die Sie unternehmen, um den Code zu verstehen? Wo fangen Sie an? Was benutzen Sie, um sich einen Überblick zu verschaffen, bevor Sie sich in die Controller, Modelle, Helfer und Ansichten vertiefen? Gibt es bestimmte Techniken, Tricks oder Tools, die den Prozess beschleunigen?

Bitte antworten Sie nicht mit "Rails & Ruby lernen" (wie eine der Antworten, die die letzter Typ der diese Frage gestellt hat - er hat auch nicht viel Antwort auf seine Frage bekommen, also dachte ich, ich frage noch einmal und fordere ein bisschen mehr). Ich komme mit meinem eigenen Code ziemlich gut zurecht. Es ist das Sortieren des Codes anderer Leute, das mir Kopfzerbrechen bereitet und ich lange brauche, um es zu verstehen.

10voto

nakajima Punkte 1852

Sehen Sie sich die Modelle an. Wenn die Anwendung gut geschrieben wurde, sollte dies Ihnen ein Bild des Domänenmodells vermitteln, in dem die interessante Logik untergebracht sein sollte. Ich schaue mir auch die Tests für die Modelle an.

Die Art und Weise, wie die Controller/Views implementiert wurden sollte nur durch die Verwendung der Rails-Anwendung und die Beobachtung der URLs ersichtlich sein.

Leider gibt es viele Fälle, in denen zu viel Logik in Controllern und sogar Views steckt. Das bedeutet, dass Sie auch einen Blick in diese Verzeichnisse werfen müssen. Doppelt schade ist, dass die Tests für diese Schichten in der Regel viel weniger klar sind.

5voto

Can Berk Güder Punkte 103655

Zuerst benutze ich die App und notiere mir die interessanten Controller- und Aktionsnamen.

Dann fange ich an, den Code für diese Controller zu lesen, und wenn nötig, auch für die entsprechenden Modelle. Ansichten sind normalerweise weniger wichtig.

3voto

honktronic Punkte 343

Im Gegensatz zu den meisten, die sich bisher geäußert haben, glaube ich nicht, dass Tests der richtige Ort sind, um damit zu beginnen. Ich denke, sie sind zu eng gefasst, zu fokussiert. Das wäre so, als würde man versuchen, die Grundlagen der Physik/Mechanik zu verstehen, indem man sich zuerst mit den intramolekularen Kräften und der Quantenmechanik beschäftigt. Ich glaube auch, dass man sich zu sehr auf gut geschriebene Tests verlässt, und meiner Erfahrung nach schreiben viele Leute keine ausreichenden Tests oder schlechte Tests (die kein genaues Bild davon vermitteln, was der Code eigentlich tun sollte).

1) Ich denke, man muss zunächst einmal verstehen, was die App eigentlich macht. Benutzen Sie sie zumindest lange genug, um eine Vorstellung davon zu bekommen, was ihr Hauptzweck ist und was die verschiedenen Arten von Daten sein könnten und welche Aktionen Sie durchführen können, und vor allem, warum .

2) Sie müssen einen Schritt zurücktreten und das große Ganze sehen. Ich denke, der beste Weg, dies zu tun, ist, mit folgenden Punkten zu beginnen schema.rb . Dies sagt Ihnen einige wirklich wichtige Dinge:

  • Welches ist das Vokabular/die Konzepte dieses Projekts? Was bedeutet eigentlich "Benutzer" in dieser App? Warum hat die App sowohl ein "Benutzer"- als auch ein "Konto"-Modell und wie unterscheiden/verwandeln sie sich?
  • Welche Modelle es gibt, erfahren Sie unter app/models aber dies wird Ihnen sagen, welche Daten jedes Modell enthält.
  • Dank an *_id In diesem Bereich lernen Sie die Zusammenhänge zwischen den Modellen kennen, was Ihnen hilft zu verstehen, wie alles zusammenpasst.

Im Anschluss daran würde ich mir die einzelnen Modelle ansehen *.rb Datei für (hoffentlich) Kommentare, Validierungen, Assoziationen und jede zusätzliche Logik, die für die jeweilige Datei relevant ist. Halten Sie Ausschau nach normalen alten Ruby-Klassen, die in lib/ .

3) Ich persönlich würde dann einen kurzen Blick darauf werfen routes.rb denn es verrät Ihnen zwei wichtige Dinge: einen kurzen Überblick über alle Aktionen in der App und, wenn die Routen und Controller/Aktionen gut benannt und durchdacht sind, ein schnelles Gefühl dafür, wo verschiedene Funktionen untergebracht werden könnten.


An diesem Punkt sind Sie wahrscheinlich bereit, sich mit einer bestimmten Sache zu beschäftigen, die Sie lernen müssen. Suchen Sie das Steuergerät für die Funktion, die Sie am meisten interessiert, und schlagen Sie es auf. Lesen Sie sich die relevanten Aktionen durch, sehen Sie nach, welche Modelle beteiligt sind, und jetzt vielleicht anfangen, Tests zu knacken, wenn Sie wollen.

Vergessen Sie nicht, den Rest Ihrer Werkzeuge zu benutzen: Ruby/Rails-Debugger, Browser-Entwicklungswerkzeuge, Protokolle usw.

1voto

Wayne Molina Punkte 18461

Ich würde sagen, werfen Sie einen Blick auf die Tests (oder Specs, wenn das Projekt RSpec verwendet), um eine Vorstellung davon zu bekommen, was die Anwendung auf höchster Ebene tun soll. Sobald Sie von der obersten Ebene verstehen, wie die Modelle/Views/Controller sich verhalten sollen, können Sie in die Implementierungen eindringen.

1voto

toddk Punkte 841

Wenn sich das Rails-Projekt in einem einigermaßen stabilen Zustand befindet, war ich schon immer ein großer Fan der Verwendung des Debuggers, um durch die Codebasis zu navigieren. Ich starte den Browser und fange an, mit der Anwendung zu interagieren. Dann wähle ich ein Stück Funktionalität aus und setze einen Haltepunkt am Anfang der zugehörigen Funktion. Dann studiere ich die Parameter, die in die Funktion eingehen, und den Wert, der zurückgegeben wird, um besser zu verstehen, was vor sich geht. Sobald Sie sich daran gewöhnt haben, können Sie die Funktion ein wenig ändern, um sicherzustellen, dass Sie verstehen, was vor sich geht. Allein die statische Analyse des Codes kann sehr mühsam sein! Viel Erfolg!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X