Nie chce się jakoś specjalnie czepiać, ale dla mnie np. nieczytelne są tuple (nie lubię). Sam kiedyś próbowałem ich używać (tyle, że korzystając z implementacji Apache Commons Lang) uznałem, że czytelniej odwzorować domenę za pomocą immutable klasy o dobrej nazwie: to czytelniejsze niż tuple. Wszystko było ok póki miałem pary. Potem jednak domena zaczęła się komplikować (drzewa) i prościej było zbudować dobre domenowe klasy (zrezygnowałem z tupli). Tuple wydają mi się takim brudnym przyspieszaczem pracy, gdzie dla bardzo prostych przypadków nie chce nam się definiować klas. Jednak jak potem coś się "w praniu" skomplikuje to IMO kosztują więcej niż oszczędzają: mam na myśli modyfikacje w przyszłości.
Mam na myśli coś takiego:
https://github.com/javaFunAgain/ratpong/blob/master/src/main/java/pl/setblack/pongi/games/api/Ball.java
Kopiuj
private Tuple2<Ball, Tuple2<Player,Player>> bouncePlayer1(Tuple2<Player, Player> players, final Random rnd) {
if ( this.x < 0 && speed.x < 0) {
if (isTouchingPaddle(players._1.paddle, this.y)){
return Tuple.of(new Ball(0f, this.y, this.speed.bounceX()), players);
} else {
return Tuple.of(Ball.randomDirection(rnd), players.map(pl1->pl1, pl2->pl2.score()));
}
}
return Tuple.of(this, players);
}
Ja rozumiem, że taka konstrukcja odwołuje się do składowej tupla:
można się domyślić o co chodzi, jednak wolałbym się odwoływać po polu z nazwą dla człowieka.
trojanusRunning
a nieRuning
:)