Jeśli posiadasz dane dla klasy, która będzie modyfikowana i musi zostać zachowana w całym programie, ale jest używana tylko w jednej funkcji składowej, preferuje ustawienie tej zmiennej jako lokalną zmienną statyczną rutyna, w której jest lub jest członkiem klasy?zmienna statyczna kontra element członkowski
Odpowiedz
Pytanie nie brzmi "czy dane będą używane w całym programie", ale raczej "jeśli zrobisz dwa obiekty tej klasy, czy chcesz, aby te dane były udostępniane?" Jeśli tak, spraw, by był statyczny. Jeśli nie, nie rób tego.
Twierdzę, że w większości przypadków nie należy nigdy używać lokalnej zmiennej statycznej, a zamiast niej używać statycznej zmiennej składowej. Następnie pytanie ulega degeneracji, jeśli zmienna ta powinna być współużytkowana w instancjach klasy, czy też nie.
Zgłaszanie zmiennej lokalnej jako statycznej oznacza, że twoja metoda ma teraz stan, niezależnie od stanu obiektu. Może to prowadzić do wielu błędów podczas utrzymywania tego kodu (takich jak implementacja konstruktora kopii, przypisanie, serializacja) i podczas czytania (niejasne zachowanie metody).
Unikaj używania locali statycznych, chyba że masz jakiś dobry powód (jedyne, co mogę wymyślić to implementacja pojedynczego wątku singletone).
- 1. Zmienna statyczna kontra volatile
- 2. Zmienna statyczna szablonu
- 3. statyczna zmienna kolejność
- 4. statyczna zmienna Public
- 5. Python zmienna statyczna deallocation
- 6. TypeScript: Najlepsza globalna statyczna zmienna statyczna
- 7. Statyczny * szablon * element członkowski w bibliotece dynamicznej
- 8. Wskaźnik funkcji C++ jako statyczny element członkowski
- 9. Łańcuchy Java: prywatna zmienna statyczna vs zmienna lokalna
- 10. Zmienna statyczna constexpr vs funkcja
- 11. Statyczna zmienna składowa C++ i jej inicjalizacja
- 12. MySQL "wait_timeout" Zmienna globalna kontra zmienna
- 13. Zmienna statyczna Java staje się pusta
- 14. Dostęp Ostatnia zmienna statyczna przy użyciu odbicia
- 15. Dostęp zmienna statyczna z metodą statyczną
- 16. Kosz na śmieci i klasa statyczna, zmienna
- 17. NullPointerException lub wypisze zawartość statyczna zmienna na
- 18. Zrozumienie statyczna zmienna inicjalizacji w Javie
- 19. Cel C - zmienna statyczna i globalna?
- 20. dostęp statyczna zmienna w symfony 2.2 gałązka
- 21. Inicjowanie statyczna zmienna o wartości nonconstant
- 22. Statyczny element członkowski C++ do funkcji - jak go zainicjować?
- 23. Jak przekazać element członkowski struktury jako wskaźnik w funkcji
- 24. Wskaźnik funkcji C++ (element członkowski klasy) do funkcji elementu niestacjonarnego
- 25. HTML5: niezastąpiony kontra zastąpiony element?
- 26. zmienna składowa python działa jak zmienna składowa, a niektóre działają jak zmienna statyczna
- 27. Klasy ruby: zainicjuj jaźń kontra @ zmienna
- 28. Powershell - "Clear-Item zmienna:" kontra "Remove-Variable"
- 29. Zmienna serwera SQL: pętla kontra duplikat?
- 30. "Obiekt" kontra "Zmienna obiektu" w Javie?
Dzięki. Zapomniałem, że nawet lokalne zmienne statyczne w funkcjach członków klasy są współużytkowane przez wszystkie obiekty tej klasy. – Anonymous