( enpassant | 2019. 10. 28., h – 09:07 )

Egyszerűen csak nem akarsz megjegyezni mindent, sőt, még csak tudni se akarsz róla.

Sok embernek ez a megoldás tetszik, mert egyszerűnek látszik. Az ilyen megoldással lehet írni a rossz minőségű kódokat.

Ugyanez Javaban elhagyható - az egész cuccot beteszed egy try-catch blokkba, és minden szépen "elintéződik" anélkül, hogy gondolkodni kellene.

Tudom, hogy minden példa rossz, de ez ugyanolyan megoldás, mint amikor a 24 tételes vizsga esetén úgy egyszerűsítesz, hogy 20 tételt kihagysz. 4 tételt sokkal könnyebb megtanulni, mint 24-et!

Nézzünk egy programozási példát!

public BlogPost update(...) {
  storage.store(post);
  tempFileService.removeTempFile(post.fileName);
}

- Szép egyszerű megoldás!
- Valóban?
- Nem. ;-)

A gond az vele, hogy a store hibája esetén nem törli a temp fájlt.

- Persze, hisz try-catch-be kellene rakni a store-t!
- Miért? Minden sort try-catch-be kell rakni?
- Nem, hülye, csak azt ahol hiba lehet és fontos, hogy az utána levők is lefussanak.
- Ja, OK, de honnan tudom, hogy a store-ben hiba lehet?
- Szól az IDE (Checked exception).
- Itt most nem szól.
- Akkor ott van a store dokumentációjában, hogy RuntimeExceptiont dob.
- Itt nincs ilyen.
- Akkor nézd meg a store forrását.
- A storage egy interféce.
- Akkor keresd meg, hogy mi implementálja.
- Megvan, csak ennyi van benne: repository.save(post). Itt se szól az IDE és nincs a doksiban sem, persze a repository is interfész.
- Kutakodj tovább!
- Megvan, CrudRepository.save. Itt se szól az IDE és nincs a doksiban sem, persze ez is interfész.
- Kutakodj tovább!
- Megvan, SimpleJpaRepository. Ez már nehezebb volt, mert a neten kellett keresgélnem. Ebben az EntityManager persist és merge metódusát hívja. Azoknál sem szól az IDE, de a doksiban benne van, hogy EntityExistsException-t, IllegalArgumentException-t és TransactionRequiredException-t is dobhat.
- Na látod! Ezért kell azt belerakni try-catch-be. Máskor ne légy ilyen figyelmetlen, minden sort kövess vissza! Ilyen egyszerű ez, ha megakarod érteni, hogyan is működik ténylegesen!