Diskuze: Teorie konečné metody
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Není ta konvence opačně? Nastavovat privátní metody jako final (což, jak jsem se dočetl, je zbytečné, pač private metody jsou implicitně final). A modifikátor tam dáš podle toho, zda je to pro veřejné použití nebo jenom interní použití. Kdes na takovou konvenci narazil?
Dočetl jsem se, že je konvence nastavovat modifikátor přístupu u konečné metody na soukromý.
Kde ses takový klenot dočetl?
V knížce od Rudy Pecinovského.
Právě mě se to taky nezdá a proto s tím lezu na forko. Nechápu, proč (jestli to vůbec teda) tak je. Vím, že to není extra závažný problém, ale zajímá mě to, abych do světa vypouštěl kvalitní kódy.
Takže jak teda? je jedno, když už použiju konečnou metodu, jaký jí dám modifikátor přístupu, nebo je zásadní rozdíl, jestli je potomkům zviditelním? stejně nic jiného než použít takovou metodou nemůžou.
Jestli jsem si nemyslel, že to bude Pecinovský Jako je to určitě machr a určitě rozumí Javě dost dobře, ale jeho knížky já osobně fakt nemusím, právě proto, že si v nich často zavádí jakési vlastní názvosloví, konvence, a občas i podivné teorie. Takže bych ho bral být tebou s velmi velkou rezervou.
Je metoda pro vnější použití? -> public/default. Je metoda určená k překrytí dědícími třídami, pokud nějaké jsou? -> final. Je pouze pro vnitřní použití? -> private (a tedy implicitně final).
Myslím, že final a modifikátor přístupu na sobě nejsou závislé - ty určíš účel a oblast užití dané metody.
Navíc pokud je metoda final, je její volání mírně optimalizované (nemusí se vytvářet struktury a tabulky na případné volání overridů - alespoň tak je to v .NET, Java to má pokud vím principielně podobné).
Je metoda určená k překrytí dědícími třídami, pokud nějaké jsou? -> final
Samozřejmě naopak - pokud NENÍ určena k overridu -> final.
jj dělal jsem si performance test a vážně jsou konečné metody rychlejší - přesně jak říkáš.
Ok chlapi, dík za reakce:) Sám vím, jaké to je luštit po někom prase
kód, tak proto se zabývám takovýmito detaily, abych do té kategorie
nepatřil:D
s
díkes a čaute.
Zobrazeno 8 zpráv z 8.