Skocz do zawartości

[FSL] Zakres widzialności pól klasy


Toster

  

9 użytkowników zagłosowało

  1. 1. Jakie zakresy widzialno?ci powinny mie? pola w klasie ?

    • private, protected, package, public
      5
    • private, protected, package
      1
    • private, protected
      4


Polecane posty

Załóżmy że mamy język który pozwala na 4 zakresy widzialności:

public, private, protected, package - jak java dla uproszczenia.

 

Pytanie brzmi czy konstrukcja klasy powinna pozwalać na definiowanie pól o zakresach innych niż private/protected ? Od pewnego czasu z różną intensywnością prowadzimy z Forcem polemikę na ten temat. Jakie jest wasze zdanie ?

 

Ja optuje za tym że dostęp do pól powinien być tylko przez propertiesy/gettery/settery a pola powinny być protected/private. Force jest za tym aby miały pełne 4 zakresy widzialności.

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

czemu durne ? z drugiej strony masz propertiesy ktorych java nie ma wiec sprawa sie "rozwiazuje"

 

 

@edit:

Wg mojego kumpla od C++

 

"ue, trzeba się rejestrować. możesz odpisać w moim imieniu? że ja jestem za elastycznością - nikt nie każe nikomu stosować dostępu public - i jak się nie podoba, to można sobie klasy protected/private robić. Ale inni mogą mieć inne zdanie i lubią się upubliczniać. O.

Bloob"

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Ja uważam, że powinien dawać możliwość bo co innego stylu programowania a co innego język. I żeby nie było, że mówię tak bo szkoda mi czasu na refraktor, ale to tylko zmiana jednej linijki kodu. Jak będzie język gotowy i będziesz ciągle męczył to zrobi się modyfikacje i będzie wersja kompilator "toaster" :P

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

Fail. FSL tez bedzie mial super chrupkie RTTI. ale nie mowmy o mechnizmach pomocniczych tylko stricte od podejsciu do programowania. Czy jezyk ma pozwalac na balagan czy powinien sie przed nim bronic. Tak brzmi de facto moje pytanie.

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Czy jezyk ma pozwalac na balagan czy powinien sie przed nim bronic. Tak brzmi de facto moje pytanie.

Jak dla mnie public też powinno być dostępne. Pisząc dla siebie nie będzie mi się chciało pisać get- i setterów... W małych programach to jest przerost formy nad treścią :P

Pozdrawiam,

vo7 (;

Link do komentarza
Udostępnij na innych stronach

Ja optuje za tym że dostęp do pól powinien być tylko przez propertiesy/gettery/settery a pola powinny być protected/private

 

Jestem również tego zdania. Aczykolwiek jeśli ktoś lubi mieć bałagan w kodzie i bawić się we wszystko public to czemu nie? Zresztą jak pisze szybko jakiś programik mały dla siebie tylko to nie bawię się często w mega porządek. Więc uznaje zasadę: co kto lubi i jak mu wygodniej.

Ot taka mini-strona moja po godzinach :)http://www.wnetrzekuchni.pl

Link do komentarza
Udostępnij na innych stronach

no wlasnie przez dlugi czas myslalem podobnie. Ale po kilku latach doszedlem do nastepujacych wnioskow:

- kali moze inni nie - czyli jak klasa jest moja to ja "wiem" co robie, gorzej jak klasa jest czyjas a ja nie wiem jak dziala wiec sobie upubliczniam cos i to zaczynam zmieniac

- uczac sie danego jezyka od razu musisz przyjac to co ci narzuca - jak ktos uczyl sie pisac kod bez indentacji to ciezko do pozniej "zmusic" aby robil to wg wytycznych, to samo ze stylem programowania, jak od razu robisz wg pewnych wzorcow to pozniej nie zastanawiasz sie co jest szybciej napisac, tylko robisz to porzadnie

- szybkosc o ktorej wspominacie wg mnie jest zludna, bo jakby tak naprawde zerknac na czas potrzebny do napisania tego to jest pomijalny, stracisz na to 10-20 s. Ogolnie duzo i szybko kod sie pisze w pierwszej fazie, jak cos sie projektuje zaczyna czyli przez powiedzmy pierwszy miesiac bedzie to po 300-1000 lini kodu na dzien, pozniej jak juz pracujesz na kodzie to tworzysz pewnie ze 50-100 linii. Sprawdzcie sobie na diffach svn'a jak sie ksztaltuje liczba zmian/dopisanych lini w czasie na jednej klasie.

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

no jak piszesz pod siebie to piszesz

 

property x: integer read fx write fx;

i shift + alt + c

 

wiec niewiele szybciej sie to pisze ;)

W sumie racja, z uzupełnianiem kodu będzie dużo szybciej. Nie wiem, w sumie to dla mnie żadna różnica, może być i bez pól publicznych :P

Pozdrawiam,

vo7 (;

Link do komentarza
Udostępnij na innych stronach

na koniec komentarz innego kumpla z roboty:

"

Toster dopiero na gg wszedlem i zobaczylem Twoje zaproszenie do tematu getter/setter. Encapsulacja, podawana jako glowny powod stosowania funkcji przy ustawianiu pol nie jest dobrym wytlumaczeniem. Wazne jest to co daje Ci opakowanie takiej operacji w funkcje, co na tym zyskujesz a mianowicie dwie rzeczy 1) polimorfizm (czyli wiesz w klasach dziedziczacych kiedy ktos ustawia dana zmienna w klasie i mozesz na to zareagowac) 2) mozliwosc zapanowania nad synchronizacja w przypadku dostepu z wielu watkow. Jesli o mnie chodzi to nie stosuje getterow/setterow tylko w wypadku zagniezdzonych prywatnych klas ktore w wiekszosci przypadkow sluza tylko jako kontener

mozna jeszcze dodac latwa mozliwosc walidacji czy opóżnionej inicjalizacji (lazy loading), reszta zalet wedlug potrzeb

"

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Tak, zgadam się z tym co wkleiłeś, ale przecież my nie dyskutujemy o dobrych manierach programowania tylko tym czy język powinien je wymuszać.

Mógłbyś Tosterze wskazać jakiś język (poza pythonem, który wymusza wcięcia), który nakazuje programiście pisać w poprawny sposób? Pytam z ciekawości.

Pozdrawiam,

vo7 (;

Link do komentarza
Udostępnij na innych stronach

Ogolnie nie spotkalem sie z tym aby jezyk narzucal indentacje poza pythonem, co nie zmienia foaktu ze pokazujac komus nieformatowany kod wychodzi sie na nooba.

Na moj gust niektore "maniery" jezyk powinien narzucac dobrym przykladem jest java.

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Maniery Elegancja = uważajcie! :P

soon Delphi will be only for veterans and finally we all will die at the end…

delphi.dathox.com - nowinki z świata Delphi/Pascala

only programmers and drug dealers call their customers "users"

 

Oto cisza przed burzą, Chwile się dłużą.Z gór schodzi dużo chmur ku podnóżom.Ptaki milaczą, drogi suche jak wiór się kurzą, Ptaki milczą a drogi się kurzą.

Link do komentarza
Udostępnij na innych stronach

  • 3 weeks later...

wiem że trochę czasu minęło od ostatniego posta ale lepiej później niż wcale (powiedziała starsza pani spóźniwszy się na pociąg :D )

 

pomysł z wymuszeniem na programiście używania gettów i settów jest bardzo dobry dlatego że wymusza pewną jednorodność wszystkich klas.

Dzięki temu nie będzie pastowało coś czego bardzo nie lubię i co bardzo utrudnia pracę, a mianowicie część pól na modyfikator public i modyfikuję/odczytuję je bezpośrednio (obiekt.X=coś;), a część ma private+get/set (obiekt.setY(coś);)

i teraz ja pisząc program muszę się zastanawiać czy akurat tą właściwość to się modyfikowało tak czy tak, przez co niepotrzebnie tracę czas

 

podczas pisania tego posta przyszedł mi do głowy pewien pomysł

a gdyby tak język sam tworzył getty i setty domyślne ?? np.

private int auto_get auto_set X;

i teraz szybko i wygodnie dostaje dwie metody do modyfikacji i odczytu (getX setX), a jeśli klasa potomna potrzebuje coś zmienić w tych metodach to wystarczy je przeciążyć tak jak każdą inną metodę

co myślicie o takim szalonym pomyśle ?? ;)

Link do komentarza
Udostępnij na innych stronach

autogenerowane setery i getery ktore mozna przeciazac maja jedna wade. Wymagaja aby byly oznaczone jako virtual, a to jest czasami wada bo metody wirtualne sa wolniejsze od zwyklych. Dajac mozliwosc podania pola albo metod dostepowych kompilator moze "tworzyc" rozne optymalizacje. Np inlinowanie ktore salobo sie ma do metod wirtualnych.

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...