Wpis z mikrobloga

#programowanie #java

Ostatni przeglądając różne projekty w Javie naszła mnie taka myśl, że Java trochę na siłę stara się być obiektowa. Wszystko musi być upakowane w klasę, co sprawia, że znaczną część klas stanowią metody statyczne. Czy tylko ja mam takie wrażenie, czy wykopowi programiści za 15K także?
  • 22
  • Odpowiedz
Dobrze wiedzieć. Nie jestem programistą, a jedynie piszę coś i przeglądam publiczne projekty w wolnym czasie i takie odniosłem wrażenie.
  • Odpowiedz
@dog_meat: Rzadko spotykam się z takim podejściem. Najczęściej to są jakieś proste pomocnicze metody do manipulacji na stringach czy składaniu predykatów. Może po prostu pokaż jaki projekt używa tego zbyt wiele, będzie można więcej powiedzieć :)
  • Odpowiedz
@dog_meat: Przecież statyczne metody to odchodzenie od obiektowości i im więcej tym gorzej. Niektórzy puryści zrobią 50 innych klas żeby tylko 1 statycznej metody nie dodać bo to zepsuje obiektowość. Imo ok jest używanie statycznych do utils.
  • Odpowiedz
@Porana123: No właśnie o to mi chodzi. W Javie wszystko musi być upakowane w klasy, przez co jest wrażenie, że kod jest na siłę pisany "obiektowo", kiedy mamy całą klasę składającą się z metod statycznych, a mimo wszystko muszą one być w klasie (zamiast leżeć sobie swobodnie obok jako zwykła funkcja)
  • Odpowiedz
@zajety_login: Paradygmat funkcyjny oczywiście
@Crisu: głownie problem dziedziczenia. I moje ulubione stwierdzenie "you wanted a banana, but you got a gorilla holding a banana" (... and whole jungle )
  • Odpowiedz
@hayenz: słowo klucz: interfejs
@dog_meat klasy i metody statyczne to zło, stosowane zazwyczaj przez początkujących w celu uproszczenia API , a realnie tworzą bagno w kodzie. Czasem się przydają (zazwyczaj jako extensions methods, ale tylko czasem, za to dużo, dużo częściej są nadużywane przez początkujących nie rozumiejących ideai enkapsulacji do robienia syfu w postaci spaghetti code)
  • Odpowiedz
@hayenz: kończysz z interfejsami, które służą do wstrzykiwania klas zależnych poprzez dependency injection. Tych klas wcale nie musi być dużo, ponieważ nie masz klasycznego drzewka dziedziczenia. W Twoim przypadku interfejs IBanana oraz klasa Banana która go implementuje.
Alternatywą jest założenie, że wszystko co pływa i kwacze jest kaczką. I tak samo jak każde inne założenie ma swoje wady i zalety.
  • Odpowiedz