Eine Eigenart von Ruby ist die Verwendung von Ausrufezeichen ! (bang) am Ende einiger Methodennamen. Solche Methoden werden auch dangerous methods (Gefährliche Methoden genannt.
Gefährliche Methoden
Methoden werden “gefährlich” genannt, wenn sie ein “ungefährliches” Pendant haben. Das ! im Methodennamen bedeutet nicht, dass die Methode etwas gefährliches macht, sondern das sie einen kleinen Bruder hat, der etwas Ähnliches macht.
Zum Beispiel:
language = " Ruby "
# kleiner Bruder
language.strip # => "Ruby"
language # => " Ruby "
# großer Bruder
language.strip! # => "Ruby"
language # => "Ruby"
Tatsächlich modifizieren gefährliche Methoden den Empfänger in vielen Fällen. Das bedeutet aber nicht, das es einen Zusammenhang gibt. Es gibt viele Methoden ohne !, die ebenfalls das Objekt modifizieren:
languages = %w(Ruby Erlang Go)
languages.clear # => []
languages # => []
Primadonna Methoden
Eine Primadonna ist eine dramatische Opernsängerin. Umgangssprachlich bezeichnet man schwierige, von sich selbst eingenommene Frauen oder Männer auch als primadonnenhaft.
Primadonna Methoden sind Methoden, die entgegen der Konvention mit einem ! markiert wurden, aber keine “kleinen Bruder” haben.
Zum Beispiel:
# schlecht
class User
# Primadonna Methode
def save!
end
end
im Gegensatz dazu:
# gut
class User
def save
end
def save!
end
end
In der Praxis ist es eher selten notwendig, 2 Methoden mit ähnlicher Geschäftslogik implementieren zu müssen. Daher sollte es auch selten eine Notwendigkeit für gefährliche Methoden (mit !) geben.
Diverse Code-Linter spüren Primadonna Methoden auf und zeigen sie als Verletzung des Ruby style guides an.