web-dev-qa-db-de.com

Inline-Kommentare in Ruby

Kann Ruby Inline-Kommentare verstehen wie:

my_array = ['first', /* 'second', */ 'third', 'fourth']

?

Update:

Ich habe nicht gefragt, was in Ruby/* */ist und warum ich einen Fehler erhalte, sondern nach Inline-Kommentaren in jeder verfügbaren Form./* */wurden nur als Beispiel für mir bekannte Inline-Kommentare angegeben.

31
Paul

Nein, Ruby hat keine Inline-Kommentare.

Kommentare dieses Stils tendieren dazu, die Lesbarkeit zu reduzieren, da sie den Code schwerer zu folgen machen.

In Ihrem Fall ist es am besten, Ihre Array-Elemente in separate Zeilen aufzuteilen und die eine Zeile auszukommentieren.

my_array = ['first',
#           'second',
            'third',
            'fourth']
30

Ich möchte nur hinzufügen, dass rdoc - der integrierte Dokumentations-Builder von Ruby - die Kommentare in Ihrem Code verwenden kann, um eine erste Dokumentation zu erstellen. Nach dem, was ich in meiner letzten Lesung verstanden habe, legt der "Ruby-Weg" nahe, dass Ihr Code lesbar und selbsterklärend sein sollte. Kommentare sind jedoch eine wertvolle und einfache Möglichkeit, Dokumentationen in der frühen Entwicklung zu erstellen, bevor Sie ein Projekt losschicken ein richtiges Dokumentationsteam.

Was Inline-Kommentare betrifft, so besteht mein Anwendungsfall darin, dass ich an länglichen Einzeilen in irb arbeite, bevor ich sie in meine ordnungsgemäß formatierten Quelldateien übergebe. Viele Leute mögen es nicht, mit Zeilenumbrüchen in ihrer Entwicklungsumgebung zu arbeiten, aber da ich im Moment nur wenig über das Toolset weiß, finde ich es langweilig, die vorherigen Befehle zu wiederholen. Ich bin fast sicher, dass dies auf mein Versagen zurückzuführen ist, die Werkzeuge zur Hand zu nehmen, sei es irb, neugierig und was Sie haben. Im Moment wickle ich jeden Code ein, den ich innerhalb eines String-Objekts kommentieren möchte, den ich später entfernen oder "unkommentieren" muss, indem ich den String-Wrapper entferne.

Nimm es oder lass es, aber das sind meine zwei Cents! Weiter reiben auf!

Nachtrag:

Es lohnt sich, das Dokument pry zu lesen! Eine pry-Methode ist an jedes Objekt gebunden, einschließlich der main. Beim Aufruf wird in der aktuellen Eingabeaufforderung eine Sub-Shell ausgeführt, mit der Sie alle Objekte im aktuellen Bereich analysieren können. Es ist in jedem Kontext verfügbar, einschließlich der Prompt-Eingabeaufforderung main. In Verbindung mit den Befehlen amend-line, edit, hist, play in Pry entspricht dies meinem Wunsch nach Inline-Kommentaren, obwohl mir immer noch keine Funktion in pry bekannt ist, die einen vorherigen Befehl in die aktuelle Eingabeaufforderung zur Bearbeitung lädt.

Das Aufrufen des Texteditors lenkt mich ein wenig ab, nicht nur, weil dadurch der Inhalt des Shell-Puffers auf einer einzigen Anzeige (z. B. Laptop) aus der Sichtbarkeit entfernt wird, sondern vor allem, weil er alle hilfreichen pry-Tab-Vervollständigungen und -Befehle entfernt. Ich würde gerne einen Hebel sehen oder ein anderes REPL, das die Verwendung des Cursors über mehrere Zeilen hinweg ermöglicht, da ich immer noch die Notwendigkeit finde, Einzeiler zu verwenden.

1
Tony Zielinski

Um ehrlich zu sein, sollten Sie keine Kommentare verwenden, Ihr Code sollte selbsterklärend sein. 

Ich weiß, dass dies möglicherweise nicht als Thema zu gelten scheint, aber höre mich als Vorschlag an, warum sie diese Art von Kommentaren niemals in Ruby implementieren werden.

Ich stolpere über diese Frage, weil ich die unschöne API unserer Kunden verarbeite. Die an den Ruby-Code verarbeitete JSON-Anforderung sieht in etwa so aus

api_response = {
  headers: ["uniq_id", "email", "description"]
  rows: [
    [2345, '[email protected]', 'first item'],
    [9876, '[email protected]', 'second item']
  ]
} 

In meinem Skript möchte ich also alle uniq-ids sammeln:

JSON.parse(api_response)
  .fetch('rows')
  .collect { |application_row| application_row.at(0) }

es wäre schön, wenn man etwas kommentieren könnte, was die at(0) abruft. Wie sawa schlägt in seinem Kommentar vor, wenn %c{} existieren würde, könnte ich so etwas tun:

JSON.parse(api_response)
  .fetch('rows')
  .collect { |application_row|  %c{uniq_id}; application_row.at(0) }

... aber dann wurde mir klar, dass ich nur dumm bin. Der Selbstcode sollte meine Absicht selbst erklären

uniq_ids = JSON.parse(api_response)
             .fetch('rows')
             .collect { |application_row| application_row.at(0) }

In einigen Fällen ist dies keine Option, daher könnte dies vielleicht der Trick sein:

JSON.parse(api_response)
  .fetch('rows')
  .collect { |application_row| uniq_id = application_row.at(0) }

... ja, dies führt zur Verwendung von nicht verwendeten lokalen Variablen. In diesem Fall ist dies jedoch in Ordnung, da die Lesbarkeit von Code davon profitieren würde, wenn die Leistung nicht zu sehr beeinträchtigt würde.

in Pauls Fall möchte er nur ein Element aus dem Array entfernen. Ich vermute, er will es wahrscheinlich zum Debuggen, aber die allgemeine Idee ist, dass Ruby Sie zwingt, Ihnen so sauberen Code wie möglich zu schreiben und alles zu entfernen, was nicht in der Produktion verwendet wird.

lösung dafür könnte sein

my_array =  ['first']
# my_array += ['second']
my_array += ['third', 'fourth']

Ist das hässlich? Nun ja, das ist der allgemeine Gedanke, dass Sie dies vor dem Festschreiben neu einkalkulieren und zwingen, hässlichen Code zu entfernen und unnötiges Material zu entfernen, bevor Sie mit der Produktion beginnen.

0
equivalent8