Jestem obecnie 4 miesiące na stażu, a podczas przeglądania mojego kodu mój szef nie spodobał się, że trzymałem konkretny obiekt lokalnie dla wielu metod w kilku oddzielnych klasach w ramach jednego zestawu. Nie podobało mu się, że za każdym razem tworzyłem nowy obiekt, a zamiast tego kazałem stworzyć jeden obiekt, do którego można uzyskać dostęp z dowolnego miejsca. Musiałem więc stworzyć go jako obiekt statyczny w klasie statycznej i po prostu odwołać się do tego tutaj, chcę go użyć!
Jak sobie z tym poradzisz, ponieważ programuję profesjonalnie dopiero od 4 miesięcy!
teamwork
coding-standards
singleton
Darren Young
źródło
źródło
Odpowiedzi:
Jeśli wystarczy jeden obiekt, tworzenie go za każdym razem jest marnotrawstwem, a tutaj szef może mieć rację.
Problemem jest właściwy dostęp do tego obiektu. Metoda przypominająca fabrykę z odpowiednią widocznością, która zawsze zwraca ten nieruchomy obiekt, jest pierwszym rozwiązaniem, które przychodzi na myśl. Inne z pewnością istnieją.
źródło
Nie mogę skomentować twojego konkretnego przypadku, ale użycie zmiennych globalnych jest czasem dobrym rozwiązaniem. Klasa systemowa Java jest pełna statycznych zmiennych globalnych.
Ale ogólnie, jeśli uważasz, że masz rację, a twój szef się myli, to dlaczego nie poprosisz szefa o wyjaśnienie, dlaczego uważa, że zmienna globalna jest lepszym rozwiązaniem? Proste „nie podoba mi się” jest tak niejasne, jak „zmienne globalne są złe”. Musisz wymagać więcej od swojego szefa!
Jeśli nie może podać powodów swojej postawy, a ty możesz podać przyczyny swojej postawy lub odwrotnie, to jest to dobra okazja do nauki. Jeśli oboje potraficie uzasadnić swoje stanowisko, to prawdopodobnie jest to kwestia gustu - lub doświadczenia: twój szef musiał programować profesjonalnie dłużej niż 4 miesiące, tak myślę?
źródło
java.lang.System
zawiera dokładnie trzy zmienne globalne, a dla każdej z nich istnieje metoda prawidłowego ustawienia. AleSystem
jest pełen metod statycznych, które zwracają obiekty globalne, i nie ma w tym nic złego, nie można się kłócić.System
upraszcza, powiedzmy, 99,9% przypadków użycia kosztem powodowania problemów w pozostałych 0,1%. Nie ma „właściwej” odpowiedzi na pytanie, czy 0,1% jest warte dodatkowej złożoności.Jako ktoś na twoim stanowisku możesz jedynie uczyć się. Jeśli obiekt jest zasadniczo stały (tzn. Nie może się zmienić i nie utrzymuje stanu), to twój szef może mieć rację. Posiadanie stałego obiektu statycznego nie szkodzi. W końcu ile jest definicji PI?
Niektórzy bronią sposobu myślenia „bez obiektów globalnych” aż do religijnej żarliwości. Jest to z jednego z dwóch powodów: trudniej było im wyśledzić błędy lub niestabilność systemu z powodu nadużywania globalnych zmiennych / obiektów, lub słyszeli, że to źle i nie mogą sami myśleć. Osobiście należę do grupy osób, które zostały mocno dotknięte kruchością i trudnością w wykrywaniu błędów - ale nauczyłem się tutaj również pewnej równowagi.
Gdybym był w twoich butach, zrobiłbym to, co mówi szef - w końcu to jego tyłek na linii. Potem oglądam i widzę efekty tego wyboru w czasie. To skuteczne narzędzie do nauki.
źródło
W zależności od konkretnej sytuacji zmienna globalna może być najlepszym rozwiązaniem. W programowaniu wbudowanym globale nie zajmują miejsca na stosie i dlatego jest to dobry wybór.
Globals czy nie, uważam, że dobrą praktyką jest umieszczanie prefiksu na globals. To sprawi, że inni programiści będą googlować twój kod, wiedząc o wpływie bałaganu.
źródło
Może to, czego chciał twój szef, to żebyś użył Wzoru Singletona. Jest to bardzo dobra praktyka, gdy trzeba uzyskać dostęp do określonego obiektu z wielu instancji.
Oto link do wyjaśnienia wikipedii
źródło
good practice
byłoby korzystać z en.wikipedia.org/wiki/Dependency_injection