Wpis z mikrobloga

@Tylko_Japonki: @NorthPL93: Ogólnie tak, ale uj wie co z tym zrobi JIT, jak metoda nie ma żadnych side effects, albo tym bardziej jeśli jest prostym getterem, to JIT może to ograniczyć do tylko jednego wykonania. (ale nie musi, bardzo dużo zmiennych o tym decyduje)

Ale ogólnie to dwa razy.
  • Odpowiedz
@Tylko_Japonki: No chyba, że dwa razy. Jak myślałeś, że to zadziała? :D
W takich sytuacjach zdefiniuje się zmienną, przypisuje jej wartość z tej metody, sprawdza jej wartość w IFie i dopiero zwraca.
  • Odpowiedz
@Tylko_Japonki: dużo lepszą praktyką jest wyrzucenie tego sprawdzenia z ifa do innej metody prywatnej. Plus nazewnictwo jest takie sobie - jak tkoś nie wie o co chodzi to może nie zrozumieć co ta metoda robi - pomyśł nad lepszymi nazwami
  • Odpowiedz
@Tylko_Japonki: Nie wiem, czy JAKIKOLWIEK język byłby w takiej sytuacji na tyle mądry :D
W końcu czasami właśnie o dwukrotne wywołanie metody programiście chodzi. I co wtedy? Jak kompilator miałby wyczuć intencje? :D
  • Odpowiedz
@Endriu_: no... mogę ci nawet zrobić w javie tak że będzie ci to ogarniać, jak tylko dodasz adnotacje np @DeduplicateCalls to w trakcie kompilacji lub w runtime zoptymalizuje takie miejsca. ( ͡º ͜ʖ͡º)
Język jak najbardziej można taki zrobić, tylko musi wtedy ta metoda być jakoś oznaczona że obsługuje takie optymalizacje, no i język musi to wspierać.

Tak tylko się czepiam o nic (
  • Odpowiedz
@GotoFinal: No właśnie, więc albo trzeba "powiedzieć" (adnotacjami) kompilatorowi, że ma zoptymalizować takie podwójne wywołania, albo napisać specjalną, optymalizowalną metodę - tylko wtedy takiej metody nie będzie się dało "podwójnie" wywołać.
Więc najprostszym rozwiązaniem jednak jest wywoływanie metody za każdym razem a niech programista się zastanowi co konkretnie chce osiągnąć :D
  • Odpowiedz