Sind mehrere before_action Anrufe schlechten code-Stil?

Arbeite ich an einer app, mit controller, viel before_actions. Die meisten von Ihnen sind mit einander verbunden durch Instanz-Variablen, die Sie festlegen. Zum Beispiel:

def first_action
  @first_variable = Something.new
end

def second_action
  if @first_variable
    @second_variable = Other.new
  end
end

Controller sieht wie folgt aus:

class ExampleController < ApplicationController
  before_action :first_action, only: [:index, :show, :create]
  before_action :second_action, only: [:index, :show, :create]
  before_action :third_action, only: [:index, :show, :create]
  before_action :fourth_action, only: [:index, :show, :create]
  before_action :fifth_action, only: [:index, :show, :create]
  before_action :sixth_action, only: [:index, :show, :create]
  before_action :seventh_action, only: [:index, :show, :create]

  def index
    # some code
  end

  def show
    # some code
  end

  def create
    # some code
  end

  private

  # all of the before_action methods
end

Es ist wirklich schwer zu verstehen, aus meiner Sicht. Jede dieser Methode hat viel code. Zusätzlich gibt es Controller, die erbt von diesem ein, und auch der Nutzung eines Teils oder aller dieser Maßnahmen.

Ich habe gehört, dass es besser werden explizit über die geladenen Variablen in jeder Methode ist aber diese:

class ExampleController < ApplicationController

  def index
    first_action
    second_action
    third_action
    fourth_action
    fifth_action
    sixth_action
    seventh_action
    # some code
  end

  def show
    first_action
    second_action
    third_action
    fourth_action
    fifth_action
    sixth_action
    seventh_action
    # some code
  end

  def create
    first_action
    second_action
    third_action
    fourth_action
    fifth_action
    sixth_action
    seventh_action
    # some code
  end

  private

  # all of the before_action methods
end

nicht viel besser Aussehen. Gibt es eine Möglichkeit, umgestalten, um mehr Lesbarkeit oder sollte ich stick mit der aktuellen Lösung?

  • Es ist nichts falsch mit, dass mehrere before_actions - aber es sieht mehr aus wie Sie einen Fall haben, wo Sie sein könnten, gesammelt in einer Klage?
  • Ich ging mit Ihrer Idee @Matt vielen Dank und wenn Sie fügen Sie es als eine Antwort kann ich dies als Lösung für mein problem 🙂
  • Getan, froh zu hören, es hat geholfen!
InformationsquelleAutor zeth | 2016-11-01
Schreibe einen Kommentar