A teljesség igénye nélkül:
- A unit-teszteknél pl. GoogleTranslationServiceTest.java ha Exception-t vársz, akkor azt inkább rakd bele a @Test annotációba (pl.: @Test(expected=IllegalArgumentException.class))
- felesleges importokat szedd ki
- személyes vélemény (ízlés kérdése): ne legyen semmilyen warning sem a kódban. Ha tudod valamiről, hogy nem hiba, akkor inkább @SuppressWarning
- GoogleTranslationService.java:
* StringBuffer helyett StringBuilder
* a translate metódusnál simán lehetne BASEURL+PARAMS stb. a new URL előtt (vagy benne) , StringBuilder-t akkor szokás explicit használni (mivel a String+String is gyk. StringBuilder-re fordul), ha pl. ciklusban rakod össze a String-et.
* (text == null || text.isEmpty()) helyett lehet, hogy érdemes Google Guava (vagy Apache Commons) Strings.isNullOrEmpty-t használni (ha több helyen is van ilyen). Persze ekkor már lehet, hogy érdemes a Preconditions-t használni
* ha a metódusaidba már úgyis fail-early (precondition) ellenőrzéseket csinálsz, akkor a lokális változó-deklarációkat (és az esetleges inicializálásukat) inkább rakd az ellenőrzés utánra
* detect: biztos vagy benne, hogy Throwable-t akarsz elkapni?
* java foreach sokszor hasznos tud lenni (a többi osztályban használtad is)
- TranslationServiceFactory.getService(String):
translationServices.containsKey(name) ? translationServices.get(name) : null; : ez ellen nem véd a ConcurrentHashMap, de elég is simán a translationServices.get(name)
- FindBugs hasznos tud lenni, nem tudom, hogy használod-e.