Classi & Moduli

  • Preferire i moduli alle classi con i soli metodi della classe.

  • Le classi dovrebbero essere usate solo quando ha senso creare istanze da esse. Preferire extend self a module_function.

# bad
module SomeModule
  module_function

  def some_method
  end

  def some_other_method
  end
end

# good
module SomeModule
  extend self

  def some_method
  end

  def some_other_method
  end
end
  • Quando si definiscono i metodi di una classe, utilizzare il blocco class << self piuttosto che def self. e raggrupparli in un unico blocco.

  • Rispettare il principio di sostituzione di Liskov quando si progettano le gerarchie di classi.

  • Usare attr_accessor, attr_reader e attr_writer per definire accessori e mutatori banali.

  • Preferire attr_reader e attr_accessor ad attr.

  • Evitare le variabili di classe (@@).

  • Preferire alias_method a alias.

  • Indentare i metodi public, protected e private tanto quanto le definizioni dei metodi a cui si applicano. Lasciare una riga vuota sopra il modificatore di visibilità e una riga vuota sotto di esso.

Last updated

Was this helpful?