Java [1242]

Zapisz się
Dodaj kartkę Dodaj bana
Powód wlepienia kartki
Wybierz wątek docelowy z listy lub wpisz jego ID
  • Koziołek [brat Javowiec]

    Co innego w zamian? Notacja węgierska? IMO fuj. Java dopracowała się konwencji JavaBeans i chyba trzymanie się jej nie wymaga jakiś super zabiegów.
  • bartkiller

    >Koziołek [brat Javowiec] napisał
    >Co innego w zamian?

    Przecież napisałem - jest dużo różnych prostych konwencji, które pozwalają na łatwe odróżnianie atrybutów od zm. lokalnych/parametrów: np. przedrostki "_" lub "m_" lub "m", lub przyrostek "_", które są dość powszechnie stosowane np. w C++.

    >Java dopracowała się konwencji JavaBeans i chyba trzymanie się
    >jej nie wymaga jakiś super zabiegów.

    Jak ostatni raz "widziałem" język Java (a dawno to było temu :) ) to chyba jednak "standardowa", zalecana konwencja odróżniała te byty (chyba, że źle pamiętam). Więc dziwi mnie, że teraz tak "się pisze" :O
    (i chciałem się upewnić, że w istocie tak jest, a nie, że jest to tylko styl autorki tematu - jeśli tak, to nie nazwałbym tego 'dopracowaniem się' tylko regresem; P)
  • Lilianne E. Blaze

    >odróżniała te byty (chyba, że źle pamiętam). Więc
    >dziwi mnie, że teraz tak "się pisze" :O
    >(i chciałem się upewnić, że w istocie tak jest, a nie,
    >że jest to tylko styl autorki tematu - jeśli tak, to nie
    >nazwałbym tego 'dopracowaniem się' tylko regresem; P)

    Nie wiem (i prawde mowiac nie robi mi to jakiejs specjalnie duzej roznicy) na ile jest to przyjete, ale tak na szybko to powiedzialabym ze tak bylo w co najmniej 2/3 kodu - i komercyjnego i open - ktory widzialam/ przy ktorym pracowalam.

    I naprawde nie uwazam (moi wspolpracownicy tez nie) zeby to zmniejszalo czytelnosc, chyba ze kod jest juz i tak malo czytelny z X innych powodow.
  • the_javu

    Przecież nie zawsze właściwość musi być polem. Metody typu setX
    i getX nie będące akcesorami sensu stricte przydają się choćby przy Java Server Faces. Składnia właściwości powoduje refleksyjne wywołania metod o takich nazwach.
  • bartkiller

    Rozumiem. Mnie się wydaje, że ciężko by mi się pracowało w takiej konwencji (piszę głównie w C++ i C#). No i trudno zaprzeczyć, że daje ona _możliwość_ pomyłki, natomiast te, o których wspomniałem ją wykluczają :) Ale z tego co mówisz wynika, że pewno jest to zjawisko marginalne.
  • Koziołek [brat Javowiec]

    >bartkiller napisał
    >Jak ostatni raz "widziałem" język Java (a dawno to było
    >temu :) ) to chyba jednak "standardowa", zalecana konwencja
    >odróżniała te byty (chyba, że źle pamiętam). Więc
    >dziwi mnie, że teraz tak "się pisze" :O
    >(i chciałem się upewnić, że w istocie tak jest, a nie,
    >że jest to tylko styl autorki tematu - jeśli tak, to nie
    >nazwałbym tego 'dopracowaniem się' tylko regresem; P)

    Odróżnianie jest oparte o "ludzką" gramatykę. Poza setterami i getterami są proste zasady:
    - pola klasy to przymiotniki,
    - metody to czasowniki,
    - nazwy klas to rzeczowniki.
    Co do zasady się sprawdza. Dodatkowo w wiele narzędzi opiera się o zasadę "Convension Over Configuration". Dobrym przykładem jest JUnit, który rozpoznaje nazwy metod testowych na podstawie przyrostka Test w nazwie. Trochę inaczej wygląda to w mavenie, który o ile jest pozostawiony "sam sobie" w kwestii nazewnictwa i struktury projektu to świetnie potrafi zarządzać tymi sprawami.
  • Lilianne E. Blaze

    Ok, ale moge jakis feedback n/t kodu a nie skladni?; /
  • boska renia

    >Lilianne E. Blaze napisała:
    >Ok, ale moge jakis feedback n/t kodu a nie skladni?; /

    Mówimy tu o Javie, więc "convention over configuration" - to jest tutaj ważne, a nie jakiś kod;) Jest to chyba najważniejsze pojęcie w tym języku -- Java to zdecydowanie język konwencji, w którym "dobre praktyki" są dosyć istotne; i jest to zdecydowanie w kontrze do języków C/C++/C#.

    > - pola klasy to przymiotniki,

    po tym stwierdzeniu nabrałem wątpliwości, ale jednak pozwole sobie na stwierdzenie, że pola są zwykle rzeczownikami; przymiotnikami jeśli już, to są pola statyczne (stałe).
  • bartkiller

    >Koziołek [brat Javowiec] napisał
    >Odróżnianie jest oparte o "ludzką" gramatykę. Poza
    >setterami i getterami są proste zasady:
    >- pola klasy to przymiotniki,
    >- metody to czasowniki,
    >- nazwy klas to rzeczowniki.

    Omg, przecież to zupełnie nie na temat. (Inna sprawa, że to co ja poruszyłem jest na granicy offtopu :) ) - chodziło mi o... zresztą przeczytaj sobie no :X
  • boska renia

    >Lilianne E. Blaze napisała:
    >Ok, ale moge jakis feedback n/t kodu a nie skladni?; /

    drobne uwagi na drugi rzut oka:

    -- tworzenie klas z samymi metodami statycznymi jest czasem wątpliwe; korzystanie z metod statycznych skutecznie ogranicza możliwość skorzystania z polimorfizmu; lepiej raczej wstawić jedną statyczną metodę getInstance(). To raczej ogólna uwaga, nie musi być tutaj w pełni trafna. Klasę z samymi metodami statycznymi wypada wtedy sfinalizować.

    -- w żadnym z dwóch plików jar nie znalazłem includowanej klasy "net.lilianne_blaze.debugstrin gutils.DebugStringBean"
  • boska renia

    >bartkiller napisał
    >Rozumiem. Mnie się wydaje, że ciężko by mi się
    >pracowało w takiej konwencji (piszę głównie w C++ i C#).

    Ja natomiast z moich przygód z C++ (a raczej BC++) pamiętam dziesiątki dziwnych słów kluczowych oraz "bardzo znaczące" podwójne podkreślenia przed nazwami metod. To właśnie mnie zdecydowanie odrzuciło od tego języka w kierunki Javy; w której sam język jest twardą i nienaruszalną bazą i, szczególnie po wprowadzeniu adnotacji, dziesiątki magicznych słów kluczowych nie są potrzebne.
  • Lilianne E. Blaze

    >boska renia napisał
    >drobne uwagi na drugi rzut oka:
    >
    >-- tworzenie klas z samymi metodami statycznymi jest czasem
    >wątpliwe; korzystanie z metod statycznych skutecznie
    >ogranicza możliwość skorzystania z polimorfizmu; lepiej

    W zasadzie sie zgadzam, ale tu (HeaderPatternUtils) jest praktycznie sam glue code i to dosc malo. Mialoby to sens gdyby calosc rozbudowac o kompletna dowolnosc dobierania dodatkowych informacji, ale wtedy to juz by byl przerost formy nad trescia.

    >-- w żadnym z dwóch plików jar nie znalazłem
    >includowanej klasy
    >"net.lilianne_blaze.debugstri ngutils.DebugStringBean"

    Jest napisane na samym poczatku, "requires (linki)", kod w zalacznikach. http://www.lilianne-blaze.net/wiki/... (wymagane) i http://www.lilianne-blaze.net/wiki/... (opcjonalne)
  • bartkiller

    >boska renia napisał
    >Ja natomiast z moich przygód z C++ (a raczej BC++)
    >pamiętam dziesiątki dziwnych słów kluczowych oraz
    >"bardzo znaczące" podwójne podkreślenia przed nazwami
    >metod. To właśnie mnie zdecydowanie odrzuciło od tego
    >języka w kierunki Javy; w której sam język jest twardą i
    >nienaruszalną bazą i,

    Nie wiem czy chcemy tu kontynuować dyskusję o wyższości jednego nad drugim (bo autorka wątku nas zabije; -) ). Generalnie raczej Twój problem tkwił raczej w BC++, a nie w istocie C++. Teraz już się tak nie pisze i zdecydowanie sam język nie wymusza korzystania z tych mechanizmów. Gwarantuje Ci, że również w Javie da się napisać gówniany kod :)
    Dodatkowo nadchodzący standard C++0x bardzo zbliży C++ do Javy jeśli chodzi o wygodę użytkowania (w szczególności będzie mieć też parę rzeczy, których wydaje mi się, że w Javie nie ma (np. funkcje lambda) (am i right ?)).

    >szczególnie po wprowadzeniu
    >adnotacji, dziesiątki magicznych słów kluczowych nie są
    >potrzebne.

    Też mi zamiana - dziesiątki magicznych słów kluczowych na dziesiątki magicznych adnotacji; P
  • boska renia

    > Też mi zamiana - dziesiątki magicznych słów kluczowych na dziesiątki magicznych adnotacji; P

    Kończąc offtop dodam tylko, że magiczne słowa kluczowe to element języka, natomiast adnotacja to twór na poziomie kodu, którego definicja jest widoczna dla programisty. Nie wspominę już o możliwości skompilowania "kodu C++" (cokolwiek to oznacza) pod różnymi kompilatorami, które tej magii zupełnie nie rozumieją;)
| |

Wszystko co związane z programowaniem w Java (J2EE, JSP, JDBC, itd) test



Fotki

Miejsca grona (1)