101 votes

Où placer des méthodes privées en Ruby?

La plupart des blogs ou des tutoriels ou des livres qui ont des méthodes privées au fond de la classe/du module. Est-ce la meilleure pratique?

Je trouve d'avoir des méthodes privées, en cas de besoin de plus de pratique. Par exemple:

public
def my_method
  # do something
  minion_method
end

private
def minion_method
  # do something
end

public
def next_method
end

De cette façon, j'ai trouver le code plus lisible au lieu de faire défiler vers le haut et vers le bas en permanence qui est très irritant.

Est-il quelque chose de terriblement mal dans cette approche? Est d'avoir des méthodes privées au fond, pas seulement une pratique d'excellence et quelque chose d'autre?

134voto

kiddorails Points 4799

La meilleure pratique à mes yeux consiste à aller de manière séquentielle et à déclarer vos méthodes sans rester privé.

A la fin, vous pouvez rendre n'importe quelle méthode privée en ajoutant simplement: private :xmethod

Exemple:

 class Example
 def xmethod
 end

 def ymethod
 end

 def zmethod 
 end

 private :xmethod, :zmethod

end
 

Cela justifie-t-il votre question?

63voto

Dennis Points 5020

Il y a aussi la possibilité de rajouter private à la définition de la méthode.

 class Example

 def xmethod
 end

 private def ymethod
 end

 private def zmethod 
 end

end
 

En regardant la définition, vous savez instantanément si une méthode est privée, peu importe où elle est définie dans le fichier. C'est un peu plus typé (si vous ne complétez pas automatiquement) et tous vos def s ne seront pas bien alignés.

54voto

Noah Clark Points 2766

Comme d'autres l'ont déjà souligné la convention est de mettre les méthodes privées au fond, sous un cours privé. Cependant, vous devriez également savoir que de nombreux programmeurs d'utiliser un double retrait (4 places au lieu de 2) méthode pour cela. La raison en est que la plupart du temps vous ne verrez pas "privé" dans votre éditeur de texte et de supposer qu'ils pourraient être public. Voir ci-dessous:

class FooBar

  def some_public_method
  end

  def another_public_method
  end

private

    def some_private_method
    end

    def another_private method
    end

end

Cette méthode devrait vous éviter de devoir défiler vers le haut et vers le bas et faire d'autres programmeurs plus à l'aise dans votre code.

15voto

Flexoid Points 2730

Je pense que les méthodes publiques sont une sorte d'interface de l'objet, et il est logique de les placer à l'endroit le plus en évidence, c'est-à-dire en haut du fichier.

14voto

kyledecot Points 1749

Vous n'avez pas besoin de mettre public ou private au-dessus de chaque méthode. Je mets généralement toutes mes méthodes privées au bas de ma classe. De plus, n'ayez pas à dire explicitement public car les méthodes sont publiques par défaut. Par exemple:

 class FooBar

  def some_public_method
  end

  def another_public_method
  end

private

  def some_private_method
  end

  def another_private method
  end

end
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X