Jak wygląda praca programisty Javy na codzień?

0

Czekamy. Póki co, nie zamierzam iść pod prąd. Aktualnie to jest wpychanie mvvm na siłę i przypomina raczej kopanie sie z koniem, bo nie jest w ogóle wspierane przez IDE.

0

MVVM (Data Binding) a Architecture Components to dwie różne sprawy.

MVVM jest już chyba wspierane przez Android Studio - aczkolwiek nie na poziomie dostarczania gotowych szablonów pod świeży projekt, zgoda

1
V-2 napisał(a):

MVVM (Data Binding) a Architecture Components to dwie różne sprawy.

MVVM jest już chyba wspierane przez Android Studio - aczkolwiek nie na poziomie dostarczania gotowych szablonów pod świeży projekt, zgoda

Nie tylko świeży projekt - dodasz nowe Activity - wygeneruje kod sprzeczny z MVVM, dodasz fragment - to samo, usługę - to samo. No kopanie się z koniem, wszystko trzeba potem ręcznie przerabiać. Wspierane będzie wtedy, gdy to będzie domyślny kod aplikacji na Androidzie.

1

Tak po prawdzie, oprócz fanatyków w firmach, gdzie panuje "klimat na mvvm" bo to teraz modne, nie widzę za wielu projektów Androida korzystających z tego wzorca. Zawsze wzorem stabilności i dobrego oprogramowania był dla mnie Cyanogenmod (teraz LineageOS). Właśnie (w ciągu ostatnich 2 miesięcy) stworzyli nową, domyślną przeglądarkę internetową dla swojego systemu - Jelly.

Przejrzałem kod - wszystko pisane "normalnie", żadnego mvvm: https://github.com/LineageOS/android_packages_apps_Jelly - rozumiem, że gdyby ktoś, nawet tu na tym forum wystawił taki kod do oceny, dostałyby baty za "spaghetti code". W ogóle przejrzałem wiele kodu z LineageOS i AOSP i też zero MVVM.

Pytanie teraz jest takie, na kim powinienem się wzorować - na twórcach oprogramowania open source, które jest doceniane i chwalone przez każdego użytkownika Androida, czy na tym, co pociskają klepacze kodu w średniej wielkości polskich firmach, gdzie jest parcie na MVVM za wszelką cenę, wbrew nawet temu jak działa IDE i jego generator kodu - wszystko to wywalamy, a potem siedzimy kilka dni, żeby zrobić z tego MVVM.

Soryy, nie czuję tego, może ignorantem jestem.

3
Trzeźwy Szczur napisał(a):

Tak po prawdzie, oprócz fanatyków w firmach, gdzie panuje "klimat na mvvm" bo to teraz modne, nie widzę za wielu projektów Androida korzystających z tego wzorca. Zawsze wzorem stabilności i dobrego oprogramowania był dla mnie Cyanogenmod (teraz LineageOS). Właśnie (w ciągu ostatnich 2 miesięcy) stworzyli nową, domyślną przeglądarkę internetową dla swojego systemu - Jelly.

Przejrzałem kod - wszystko pisane "normalnie", żadnego mvvm: https://github.com/LineageOS/android_packages_apps_Jelly - rozumiem, że gdyby ktoś, nawet tu na tym forum wystawił taki kod do oceny, dostałyby baty za "spaghetti code". W ogóle przejrzałem wiele kodu z LineageOS i AOSP i też zero MVVM.

Pytanie teraz jest takie, na kim powinienem się wzorować - na twórcach oprogramowania open source, które jest doceniane i chwalone przez każdego użytkownika Androida, czy na tym, co pociskają klepacze kodu w średniej wielkości polskich firmach

Powinieneś (moim zdaniem) nie myśleć o tym w kategoriach wielkości firmy czy popularności projektu, bo to kompletnie fałszywy trop. Zastosowana architektura powinna wynikać z natury projektu. Pisanie systemu operacyjnego, czy czegoś tak złożonego - i sięgającego do niskiego poziomu - jak przeglądarka, to jest całkiem inne zadanie niż tworzenie typowej aplikacji biznesowej.

Naszym zadaniem, jako programistów, jest rozpoznanie natury projektu i odpowiednie dostosowanie naszego warsztatu. Ślepe kopiowanie rozwiązań z innej domeny nie prowadzi do niczego dobrego. Emocjonalny stosunek do tych zagadnień (jak to twoje określenie stosujących MVVM jako "fanatyków") tym bardziej nie będzie wystawiać ci dobrego świadectwa jako profesjonaliście.

Przejrzyj źródła Android SDK: są tam klasy po kilka tysięcy linii. Czy to znaczy, że też mamy tworzyć klasy na kilka tysięcy linii, bo Google to duża firma a Android SDK ma miliony użytkowników? To powierzchowne rozumienie problemu. Ja ich nie nazywam partaczami czy fanatykami, bo rozumiem, że pisanie ogromnego SDK rządzi się całkiem innymi prawami i optymalizacji kodu przyświecają odmienne priorytety. Tam nie można sobie np. pozwolić na luksus rozbudowanej obiektowości, bo ważniejsza jest wydajność, agresywne ograniczanie rozmiaru finalnego builda itd.

A to open-source'owana aplikacja Kickstarter na Androida: https://github.com/kickstarter/android-oss

Prawie milion użytkowników, firma o wartości szacowanej na setki milionów dolarów. Zatrudniają fanatyków-klepaczy, którzy zaimplementowali piękne MVVM oparte o RxJavę. Jeden z najczystszych dużych projektów jakie widziałem.

Bez otwartego umysłu nie da się rozwijać w tym zawodzie

0

@V-2 A co ma RxJava do mvvm? I tak btw, Google ma swój własny odpowiednik RxJavy, niektórzy twierdzą że lepszy i napisany z myślą o Androidzie, Google używa go w swoich własnych aplikacjach: https://github.com/google/agera

0
Rerere napisał(a):

@V-2 A co ma RxJava do mvvm?

MVVM potrzebuje jakiegoś "kleju", żeby połączyć viewmodel z widokiem. RxJava dobrze się sprawdza w tej roli. Oczywiście nie jest nieodzowna, ale ma ten atut, że daje się użyć także do komunikacji między modelem a serwisami itp. czyli osiągamy, że tak powiem, technologiczną jednolitość na obszarze poszczególnych warstw aplikacji.

I tak btw, Google ma swój własny odpowiednik RxJavy, niektórzy twierdzą że lepszy i napisany z myślą o Androidzie, Google używa go w swoich własnych aplikacjach: https://github.com/google/agera

To jest ciekawa propozycja. Widziałem tę bibliotekę jak wyszła. Jeżeli uznać ją za odpowiednik RxJavy, to tylko w bardzo luźnym sensie. Jest znacznie prostsza i uboższa technicznie niż RxJava. Zob. https://github.com/google/agera/issues/20 - w szczególności to co napisał Karnok.

Oczywiście taka alternatywa typu "light" może być nieraz lepszym rozwiązaniem, zwłaszcza w świecie apek mobilnych, gdzie zasoby są cenne. Ale trzeba wtedy mieć świadomość, że o wiele kwestii dobrze rozwiązanych w RxJavie, jak np. backpressure, musimy zatroszczyć się samemu.

0

Ile % czasu pracy przeciętnego klepacza Javovca to klepanie formatek?

w rozumieniu stawiania formatów, które np. po kliknięciu zapisują coś do hurtowni danych, edytują ją lub coś wyświetlają?

0
Julian_ napisał(a):

Ile % czasu pracy przeciętnego klepacza Javovca to klepanie formatek?

w rozumieniu stawiania formatów, które np. po kliknięciu zapisują coś do hurtowni danych, edytują ją lub coś wyświetlają?

Zależy jak szybko klepiesz fornatki lub jak bardzo to zautomstyzujesz.

1
MuadibAtrides napisał(a):
Julian_ napisał(a):

Ile % czasu pracy przeciętnego klepacza Javovca to klepanie formatek?

w rozumieniu stawiania formatów, które np. po kliknięciu zapisują coś do hurtowni danych, edytują ją lub coś wyświetlają?

Zależy jak szybko klepiesz fornatki lub jak bardzo to zautomstyzujesz.

a przeciętny Javowiec jak bardzo automatyzuje?
konkretne pytanie a filozofujesz...

1 użytkowników online, w tym zalogowanych: 0, gości: 1