Jak uprościć kod z opcjonalem

0

Skrytykowane mnie, że ten kod jest syfiasty i że tak teraz piszą dzieci w gimnazjum

if (repository.findById(id).isEmpty()) {
    return Either.left(createApiError(HttpStatus.NOT_FOUND, "Resource with given id doesn't exist"));
}
else {
    Mapper.map(toUpdate, repository.findById(id).get());
    return Either.right(null);
}

Zapytałem więc - jak mogę go poprawić?
Odpowiedź - Użyj składni

opt.ifPresent(value -> {
    
})

Ale z tego co mi wiadomo, tam się nie da zwrócić wartości. Jak mam niby to przerobić, żeby nie było tego if-elsa?

PS: Gimnazjum już nie istnieje, wiem o tym, ale gość co sprawdzał kod to głupek

4
NieOgarniamOpcjonala napisał(a):

Odpowiedź - Użyj składni

opt.ifPresent(value -> {
    
})

Raczej map, a dokładniej:

repository.findById(id)
.map(a -> {
  Mapper.map(toUpdate, a);
  return Either.right(null);
})
.orElseGet(() -> Either.left(createApiError(HttpStatus.NOT_FOUND, "Resource with given id doesn't exist")))
4

Co to jest?
return Either.right(null);

Albo pytanie pomocnicze... co ma ta funkcja zwracać ? Either<HttpResonse, ???>

0

Albo pytanie pomocnicze... co ma ta funkcja zwracać ? Either<HttpResonse, ???>

Ma zwracać Either<HttpResonse, Void> (w sensie nic, znaczy nie ma błędu)
To chyba w ogóle nie powinno być tak robione, pracuję od poniedziałku na stażu (dzisiaj 5. dzień), a gość co mną "kieruje" ma 3 miesiące doświadczenia.

4

Either<HttpResonse, Void> jest niebanalne.

Ale durne niestety.
Strzelam, że powinno być po prostu HttpResponse

0

To jest metoda do aktualizacji - jak jest błąd, bo zasobu nie ma, to zwraca informację z błędem do kontrolera, a jak zasób jest i wszystko się udało, to zwraca nic.
Ten gość "kierownik" zespołu tak wymyślił, ja jak zaproponuję zrobić coś inaczej, to jest toksyczny i straszy "poważnymi konsekwencjami" za podważanie jego znajomości programowania. To czyjś syn chyba.

W tym serwisie jest więcej metod co zwracają Either, ale tam jest po lewej Error, a po prawej obiekt, więc jest ok.

5

To czyjś syn chyba.

Zapewne syn swojej matki i ojca. Typowe.

Jak się nie poprawi tego konceptu z Either<..., Void> to to nigdy mądrze nie będzie wyglądać. Zwłaszzcza krzyżowanie null i Eithera to herezja.

3

Faktycznie można dać return null jak oczekujesz Void ale to jakaś abominacja. Ja bym osobiscie zwrócił usuwany element albo od biedy NO_CONTENT, ale tym bym się przejmował dopiero w samym kontrolerze. Przez aplikacje przepychałbym jednak Either<ApiError,T> a najwyżej w kontrolerze jak robicie jakiegoś .fold i zamieniacie Either w ResponseEntity to zrobił tam NO_CONTENT i olał ten obiekt.

6

@KamilAdam, @jarekr000000, @Shalom dziękuję za odpowiedzi.
@jarekr000000: przepraszam, ale piszesz niektóre zdania takim dziwnym polskim, że nie rozumiem :(

@anckor: ja tam jestem 5 dni (tak na prawdę 4, od 1 lutego), więc za wiele to się nie nazbierało. 31 stycznia byłem na godzinnym "oprowadzeniu po firmie". Typiara co mi pokazywała wszystko gadała jak jakiś podjarany przewodnik turystyczny. Pierwszego dnia zaprowadzili mnie do tego faceta (około 27-30 lat), powiedział, że jest liderem mojego zespołu i mam słuchać jego poleceń. Powiedział mi, że pracował jako koder 3 miesiące w tej firmie żeby się oswoić z przychodzeniem do pracy i wskoczył na lidera, bo ma spore doświadczenie niekomercyjne i ukończył prestiżowy University of Brighton. Ma oficjalnie stanowisko chyba "Java developer" ale ja go nazywam kierownikiem :D
Teraz siedzi i nie koduje, w sumie nie wiem co robi przez większość dnia. Rano podchodzi i "rozdaje" taski (sami moglibyśmy sobie je podejrzeć, bo są w systemie). Potem trochę papierkowej roboty ma i łazi i nadzoruje, często się kłóci z kimś, że coś jest źle zrobione. Albo łazi z innymi gostkami na papieroską/kawę/obiad.

Drugiego dnia powiedziałem przy nim dla żartu, że architektura naszego systemu jest taka "tutorialowa" trochę. Wkurzył się i powiedział, że jest dobra, potem że mam siedzieć i pisać kod a nie się mądrzyć. Więcej się nie odezwałem. Jestem studentem i mam umowę na 3/5 etatu. Teraz jest sesja, jak chciałem wyjść na egzamin to musiałem go poinformować dokładnie o której wrócę, bo mi zapisze "nieoficjalną naganę" u siebie w papierach za spóźnienie (nie wiem, jakiś zeszyt ma gdzie zapisuje przewinienia pracowników czy co xD).

W zespole jest jeden gość co pracuje pół roku, ma z nim dobre kontakty, wręcz przyjacielskie. Typ specjalnie się nie przemęcza, "kierownik" nie zwraca na to uwagi. Jest też jedna dziewczyna, która często się z nim kłóci. Zarzuciła mu kiedyś, że się nie zna na projektowaniu i programowaniu, to do niej poleciał tekst "za podważanie moich decyzji będą surowe konsekwencje". Jest jeszcze drugi stażysta, co przyszedł ze mną. I chyba jeden gość jest na zwolnieniu teraz, ale nie znam go.

Pan "kierownik" ogólnie jest bardzo żywiołowy i porywczy, jak się powie coś, co mu nie odpowiada (niekoniecznie do niego) to momentalnie podnosi głos i chamsko odpowiada.

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