Gefährliche Primadonna Methoden

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.