Lassen Sie in Ruby Klammern rein oder raus? [geschlossen]


Antworten:


94

Aus den Elementen des Ruby-Stils

Mit Ruby können Sie Klammern weglassen und dieser Versuchung im Allgemeinen widerstehen.

Klammern erleichtern das Verfolgen des Codes. Im allgemeinen Ruby-Stil werden sie verwendet, außer in den folgenden Fällen:

  • Lassen Sie immer leere Klammern weg
  • Die Klammern können in einem einzelnen Befehl weggelassen werden, der von ERb-Trennzeichen umgeben ist. Die ERb-Markierungen stellen sicher, dass der Code noch lesbar ist
  • Eine Zeile, die aus einem einzelnen Befehl und einem einzelnen einfachen Argument besteht, kann ohne Klammern geschrieben werden. Persönlich finde ich, dass ich das immer weniger mache, aber es ist immer noch perfekt lesbar. Ich mag keine einzelnen Zeilen in normalem Ruby-Code, die mehrere Argumente und keine Klammern haben.
  • Viele Ruby-basierte domänenspezifische Sprachen (wie Rake) verwenden keine Klammern, um ein natürlicheres Sprachgefühl für ihre Aussagen zu erhalten.

27

Ich benutze Parens als Kommentare, um der Zukunft zu helfen ... wer hat wahrscheinlich weniger Gehirnzellen als das aktuelle Ich :-)

Nichts schlimmeres, als sich einen Code anzusehen, den Sie vor 2 Jahren geschrieben haben, und ihn falsch zu verstehen, damit Sie beim Ändern etwas kaputt machen.

Wenn Parens mir in Zukunft ein paar Minuten (oder Stunden) die Zukunft ersparen, werde ich so viele wie nötig einsetzen, um die Aussage kristallklar zu machen.


2
+1 "Ich benutze Parens als Kommentare, um der Zukunft zu helfen ... wer hat wahrscheinlich weniger Gehirnzellen als das aktuelle Ich :-)" Das ist SO wahr und genau deshalb mache ich es. Es ist auch barmherzig für jeden, der mir folgt und meinen Code verwenden muss. Kurz gesagt, es ist eine Wartungssache.
der Blechmann

9

Ich lasse sie weg, wenn ich DSL-artige Sachen mache, wie t.column oder has_many in Rails. Der Rest der Zeit kommt es im Allgemeinen auf Klarheit an, und es ist wahrscheinlich eine gleichmäßige Spaltung.


8

Ich denke, ich mache beides, aber ich behalte sie definitiv bei, wenn es die Lesbarkeit erhöht und Aussagen vermeidet, die mehrdeutig aussehen.


8

Wenn Sie in Funktionsaufrufen meinen, setze ich immer Klammern, weil es immer einfacher zu lesen ist. Wenn Sie unter Bedingungen (wenn, während) meinen, setze ich Klammern nur, wenn sie notwendig sind.


2
Genau. In PHP kann ich zum Beispiel schnell eine Variable durch das Präfix $ erkennen. In Javascript kann ich eine Funktion durch die Klammer () rekonstruieren. In Ruby ist der Unterschied zwischen var oder func (ohne Klammern) nicht immer leicht zu erkennen.

7

Ich versuche sie wegzulassen, wenn es überhaupt möglich ist. Ich denke, es erleichtert das Lesen von Code (im Allgemeinen).


4

Was normalerweise besser lesbar ist.

Aber ich verwende immer Klammern, wenn ich Funktionsaufrufe in den Parametern anderer verschachtele


2

Ich neige dazu, sie wegzulassen, wenn ich Behauptungen wie assert_equal mache. Vielleicht liegt es daran, es domänenspezifisch sprachlich zu machen.


1

Wenn Sie schon lange programmiert haben, werden Sie wahrscheinlich einen "Juckreiz" haben, Klammern hinzuzufügen, und in vielen Fällen gibt es gute Gründe dafür.

Der Code ist meiner Meinung nach jedoch augenschonender und ich bin noch nicht auf ein Problem gestoßen. Wenn Sie Klammern benötigen, wissen Sie dies im Voraus, bevor Sie das Debugging-Skript ausführen müssen.


4
"Mein Lehrer sagt mir, dass es unvermeidlich ist". Es ist und kann schwer zu debuggen sein. Ich empfehle, sie zu verwenden, um eine mehrdeutige Parameterzuweisung zu vermeiden.
der Blechmann

Als "augenschonender" herabgestuft ist IMO ein mieser Grund, Klammern um Funktionsargumente wegzulassen.
Marcello Romani

1
Als ich mit der Menge der Nicht-Eltern gesprochen if owner.is_a? thing //worked fine if owner.is_a? thing && x > 1 //not fine habe, bin ich neulich auf dieses Problem gestoßen. Ich lerne erst seit ein paar Wochen Ruby und wo ich arbeite, werden so viele Zeichen wie möglich verwendet. Wenn Sie aus einer anderen Sprache kommen, gibt es ein Lernen Kurve, um zu wissen, wann Sie einen impliziten Hash, eine Reihe von Symbolen, übergeben, um Symbole an eine Funktion zu übergeben ... Ich bin kein Fan.
Mega Man

@ MegaManif owner.is_a? thing and x > 1
anna328p

1
@DmitryKudriavtsev andhat nicht die gleiche Rangfolge der Operatoren , die &&hat
Mega Man
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.