Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zmienne prywatne i funkcje zwracające listy czy zmienne publiczne?

Ostatnio zmodyfikowano wczoraj o godz. 19:44
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
Zmienne prywatne i funkcje zwracające listy czy zmienne publiczne?
» 2025-10-21 11:47:57
Zmienne prywatne i funkcje zwracające listy czy zmienne publiczne?
Jak programować? Bo mam dylemat, a chciałbym porządnie napisać program.
No i co dokładnie to daje. Zwiększy sie wydajność programu? Chodzi o przechwytywanie z innych programów zmiennych czy co? Bo jak tylko o dostępm zmiennych z poziomu kodu to ja tam wszystko na public bym robił.

źródło:
https://www.youtube.com/live/lircavLktG0?si=Vx2Vl2CenHIA_aO2
P-183212
pekfos
» 2025-10-21 17:14:35
Zmienne prywatne i funkcje zwracające listy czy zmienne publiczne?
Obie opcje brzmią źle. Dobrze we właściwym kontekście, ale źle jako ogólne pytanie.

Zwiększy sie wydajność programu? Chodzi o przechwytywanie z innych programów zmiennych czy co?
Nie, to jest ściśle wysokopoziomowy koncept, nie ma żadnego wpływu na generowany kod. Cała pamięć Twojego programu jest prywatna dla tego programu, chyba że ręcznie zaalokujesz obszar jako współdzielony. To podstawowa funkcjonalność bezpieczeństwa zapewniana przez system operacyjny.

Bo jak tylko o dostępm zmiennych z poziomu kodu to ja tam wszystko na public bym robił.
Tylko, i aż. To jest celowe wiązanie sobie rąk. Chodzi o czytelność, możliwość rozwijania kodu z zachowaniem kompatybilności z kodem używającym danej klasy i bezpieczeństwo w wielowątkowym zastosowaniu klasy.
Czytelność dlatego że jeżeli chcesz przeanalizować kod używający jakiejś zmiennej prywatnej, to wiesz że patrząc na kompletną implementację klasy widzisz wszystkie użycia tej zmiennej. W przypadku zmiennej chronionej musisz też rozważyć klasy pochodne. W przypadku publicznej, szukasz po całym kodzie.
Z tego samego powodu to jest ułatwienie w rozwoju. Zmienne prywatne są szczegółem implementacyjnym klasy, żaden kod na zewnątrz z nich nie korzysta bezpośrednio, więc możesz dowolnie zmienić sposób działania klasy bez zmieniania kodu na zewnątrz. Łatwiej w ten sposób eksperymentować z wydajnością itp. To szczególnie ważne gdy piszesz w zespole i ważne do kwadratu, gdy piszesz bibliotekę używaną przez innych programistów. Gdybyś sobie korzystał z wnętrzności SFML, zamiast z przygotowanego interfejsu, musiałbyś migrować kod przy każdej aktualizacji, być może nawet go przepisywać, bo rzeczy na których polegałeś już nie istnieją.
Jeżeli chodzi o
C/C++
const std::vector < RenderItem > & GetRenderItems() const;
to jest to dobre rozwiązanie, bo zwracanie referencji jest tanie. I chociaż pozwalasz pracować na obiekcie prywatnym, wymuszasz brak modyfikacji z zewnątrz. Wiesz dokładnie jakie obiekty są używane (te które wystawiasz) i nie wprowadzasz dodatkowych miejsc modyfikacji. Nie jest to już akceptowalne jeżeli rozważasz pracę na wielu wątkach.
P-183213
tBane
Temat założony przez niniejszego użytkownika
» 2025-10-21 19:44:36
Ok. Dziękuję. Czyli zmienne prywatne są po to, by nie gubić się w kodzie. I to mi wystarcza. :-)
P-183214
« 1 »
  Strona 1 z 1