Zmienna globalna czy przekazywanie do funkcji za każdym razem

0

Witam.
Mam dość proste pytanie.
Co się bardziej opłaca w sytuacji gdy mam ArrayList z którego wiem, że będę tylko i wyłącznie odczytywał.

Więc opłaca się ustawiać zmienna globalną z której będą czy za każdym razem przekazywać jako parametr do metod ?

Pozdrawiam

1

Zmienne globalne zawsze stwarzają więcej problemów niz korzyści. Należy ich używać tylko w wyjątkowych sytuacjach i z pełną premedytacją. Tak więc z prawdopodobieństwem 1 (nie koniecznie jest to zdarzenie pewne), lepiej będzie przekazywać jako parametr. Można też pomyśleć na innej organizacji całości (np umieszczenie takiej ArrayListy w obiekcie, gdzie będziesz miał większość potrzebnych ci metod, wtedy nie będziesz musiał przekazywać jako parametr tej zmiennej), nie znam projektu, więc nie podpowiem więcej, bo ciężko powiedzieć.

0

Tutaj, faktycznie należało by się zastanowić co dany obiekt będzie robił. Ogólnie przekazywanie kontekstu przez parametr, lub jego wstrzykiwanie jest spoko. Niemniej czasami warto zrobić co ala zmienna globalna - np. Singleton. Przydaje się, np. jak piszemy logger i chcemy mieć do niego dostęp zewsząd i wiemy, że będzie to zawsze jedna instancja.

0

Kolejność moim zdaniem taka:

  • najlepiej parametr funkcji;
  • jeśli nie jest to możliwe, to singleton;
  • ostatecznie (ale rzeczywiście ostatecznie!) -- zmienna globalna...

@lukas_gab: Przy czym należy pamiętać, że singleton nie jest zmienną globalną... :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1