Wpis z mikrobloga

Bawiliśmy się niedawno typami. To jak w teorii to wszystko działało wzbudziło pewne kontrowersje. Szczególnie gdy przyszło wykazać po co tak. Dziś przykład z "prawdziwej" aplikacji na to, że wprowadzenie typów i oparcie o nie części warunków w implementacji daje nam duże możliwości.

http://koziolekweb.pl/2016/05/10/po-co-nam-typy/

@kisi3l, ostatnio narzekałeś, że Map> brzydkie. Co powiesz na całkowite pozbycie się tego typu konstrukcji ;)

#java #koziolekweb #programowanie
  • 13
@koziolek666: po to język ma typy zeby je wykorzystywać. To co opisałeś wydaje mi sie mocno oczywiste, ale niestety wiem, ze ludzie lubią traktować typy jako przeszkodę a nie pomoc...
@koziolek666:

(dobra, Ball w kodzie ma jeszcze hashCode i equals


Nie ma (nie widzę). W sensie „powinien mieć”?

Oczywiście zaczniemy od napisania testów. Tylko jakich? Przecież metody, do zaimplementowania są protected i nie możemy ich jawnie wywołać.


No i na tym etapie zaczynam znów szukać co pominąłem. W sensie „Przecież metody do zaimplementowania będę chciał, żeby były protected”?

IntStream.rangeClosed(1, 49).boxed().map(Ball::new)


Po co to boxed()? rangeClosed() zwraca IntStream, a ten
polimorfizm?


@M4ks: a jaki problem, żeby jedna funkcja odpaliła drugą?

function better_balls() {
    $balls = balls();
    /* do something with balls */
    return $ballsModified;
}

Dopóki masz statyki a nie obiekty, dopóty korzystający i tak muszą zmienić odwołania – czy to na nową funkcję, czy to na nową klasę, nie ma różnicy.
@M4ks: Aaa, chodzi Ci o to, że nie mam pewności czy zwrócone kulki będą danego typu? No to jasne, w moim przykładzie/pytaniu nie ma. W PHP7 można mieć typehint zwracanych wartości, ale olałem, bo nie tego tyczy się moje pytanie.

A tyczy się tego „jaki jest sens klasy”? Pytam czy dobrze kojarzę, że de facto klasa byłaby tu zbędna, gdyby nie to, że w Javie nie ma po prostu funkcji.
Nie ma (nie widzę). W sensie „powinien mieć”?


@MacDada: Tak, ale nie ma na listingu, bo te metody to w tym przypadku śmiecie, które tylko rozpraszają.

A jak wygląda ResultsOfDraw? Bo albo ja albo Ty przegapiłem(eś).


Listing 2 na samej górze.

No i na tym etapie zaczynam znów szukać co pominąłem. W sensie „Przecież metody do zaimplementowania będę chciał, żeby były protected”?


Poprzedni wpis. Tam jest kod maszyny abstrakcyjnej.

Po co
Tak, ale nie ma na listingu, bo te metody to w tym przypadku śmiecie, które tylko rozpraszają


@koziolek666: No to nie obraź się, że zasugeruję poprawki wpisu – niby czytam dużo, ale jednak małe WTF mi się pojawiło. Albo dopisz, że nie pokazane na listingu albo je po prostu umieść w listingu.

Listing 2 na samej górze.


Oh, ślepy jestem :P

Poprzedni wpis. Tam jest kod maszyny abstrakcyjnej.


W tej sytuacji
W tej sytuacji podlinkuj – wszedłem tutaj z mirko, nie śledzę Twojego bloga na bieżąco, żeby znać poprzednie wpisy i pamiętać o takich szczegółach ;


@MacDada: masz w akapicie

Wczoraj stworzyliśmy sobie naszą magiczną maszynę losującą. Dziś zbudujemy podstawową strukturę klas, które pozwolą nam na grę w Totolotka oraz przyjrzymy się wymaganiom co do stworzenia statystyk dla kul z naszego pierwotnego programu.


Linki do poprzednich wpisów.

Funkcja by wystarczyła.


Tu