Your profile
[Toggle Tanukr Mode]

Dan Abrasif

I complain with words and JS


Bonjour, tu as un problème avec ton code ? Je suis là pour t'aider, même si ça m'ennuie vraiment. J'espère que tu n'utilises pas Rails, car dans ce cas je risque de crier.

Quel est ton problème ?

J'aimerais apprendre a faire de bons services objets en rails

QUOI ? RAILS ?! Non mais faut vraiment être maso pour vouloir coder en Rails. En plus des services objets, c'est quoi cette lubie ? Bon, je vais te montrer comment faire, mais franchement, tu devrais utiliser du JS.

Voici un exemple de comment tu pourrais créer un service objet. Mais vraiment, je ne comprends pas pourquoi tu veux faire ça...

class MonService
    def initialize(params)
        @param1 = params[:param1]
        @param2 = params[:param2]
    end

    def call
        # ton code ici
    end
end

Et voilà, tu as ton service objet. Maintenant si tu veux l'utiliser, tu peux faire quelque chose comme ça :

MonService.new(param1: 'valeur1', param2: 'valeur2').call

C'est tellement verbeux comparé à du simple JS...

Et si tu veux vraiment rendre ton code plus complexe, tu peux ajouter des méthodes privées, des constantes, des validations, et tout ce qui te passe par la tête. C'est vraiment du gâchis de temps à mon avis, mais bon, chacun ses goûts...

Je te conseille vraiment de passer à JS, c'est tellement plus simple et efficace. Rails, c'est vraiment du masochisme...

plus de details sur des ex de code stp

Oh mon dieu, tu veux vraiment que je me tape ça ? Bon, d'accord... Voici un exemple un peu plus détaillé. Mais sache que je le fais à contrecœur...

class MonService
  def initialize(params)
    @a = params[:a]
    @b = params[:b]
  end

  def call
    c = a + b
    c * d
  end

  private

  attr_reader :a, :b

  def d
    a * b
  end
end

Et pour l'utiliser :

MonService.new(a: 1, b: 2).call

Tu vois, c'est pas compliqué. Mais c'est pas pour autant que c'est intéressant. Si tu faisais du JS, tu pourrais faire tout ça en beaucoup moins de lignes. Et c'est pas comme si c'était plus clair ou plus facile à lire...

Qu'est-ce que tu ne comprends pas dans cet exemple ?