2011-10-25 9 views
9

Mam wiele metod działania, które nie muszą tworzyć zmiennej instancji do renderowania widoku, ponieważ ta metoda przekieruje tylko na inne akcje z innych kontrolerów . Zastanawiam się: czy dobrym zwyczajem jest zawsze tworzyć zmienną instancji, aby przestrzegać konwencji Railsów, lub nie ma czegoś takiego. Mam intuicję, że zmienna lokalna zmniejsza koszty pamięci, ale kod nie wygląda ładnie.W szynach ważne jest używanie zmiennej lokalnej lub zmiennej instancji w metodach działania

Odpowiedz

7

Głównie musimy użyć zmiennej instancji w następujących przypadkach

  1. Kiedy trzeba uzyskać dostęp do zmiennej z pola widzenia
  2. Jeśli mamy wywołanie metody z działaniem, zamiast zwracania wartości, my może bezpośrednio aktualizować zmienną z wywołanej metody.

Dlaczego powinniśmy używać zmiennej instancji, jeśli nasze zadanie można wykonać za pomocą zmiennej lokalnej.

+0

Jeszcze jeden przypadek, w którym możemy użyć zmiennej instancji, to użycie pamięci podręcznej, przykład - def total_budget @totoal_budget || = obliczenia kończą się tutaj – nkm

10

Nie jest konwencją tworzenie zmiennych instancji, jeśli nie są one wysyłane do widoku.

  • Zmienne powinny mieć możliwie najwęższy zakres.
  • Powinny być lokalnymi, jeśli nie zostaną przekazane do widoku.
  • Użyj prezentera, jeśli masz "dużo" danych widoku (zamiast tony instancji vars).

Zmienne instancji mogą być stosowane, jeżeli wiele metod działać na nich przed pogląd, nawet jeśli nie są one wykorzystywane w widoku, ale to sprawia, że ​​kod znacznie trudniej się rozumieć, o izolacji i test .

Jeśli używasz zmiennych instancji do przechowywania obliczeń pośrednich, prawdopodobnie musisz ponownie przemyśleć swój przepływ i/lub projekt.

+0

Ponadto, używając vars instancji, w których wykonywane były lokalne znaki, przechowuje odwołanie do pamięci na dłużej, niż jest to konieczne. Zachowanie szczupłości jest korzystne z wielu powodów. – Midwire

4

Jedynym powodem, dla którego używasz zmiennych instancji w kontrolerach, jest wprowadzanie elementów do widoku bez konieczności jawnego przekazywania stosu stanu.

Jeśli nie masz żadnego stanu, nie masz żadnych zmiennych instancji, więc nie ma powodu, aby z nich korzystać.

Powiązane problemy