V 90% případů mi stačí zkontrolovat, že vstupní parametr není
null
.Joshua Bloch radí vyhodit
NullPointerException
, ale já, a troufám si tvrdit že i velká část java komunity, preferuje IllegalArgumentException
.Kód by mohl vypadat třeba takto
public void foo(final String request) { if (request == null) { throw new IllegalArgumentException("Parameter 'request' can't be null."); } }Protože nejsem na světě sám, co potřebuje validovat vstupní parametry, existuje spousta knihoven, které lze pro tyto účely využít (psát vlastní validační knihovnu považuji jen za zvyšování chaosu ve vesmíru).
První možností je třída
org.apache.commons.lang.Validate
z knihovny Apache Commons Lang.
public void foo(final String request) { Validate.notNull(request, "Parameter 'request' can't be null."); }Místo původních třech řádků jen jeden. Na skoro všech projektech ale používám i Spring, tak proč nepoužít třídu
org.springframework.util.Assert
, která je hodně podobná org.apache.commons.lang.Validate
?
public void foo(final String request) { Assert.notNull(request, "Parameter 'request' can't be null."); }Samotní autoři nedoporučují použít tuto třídu! Citace z javadocu:
Mainly for internal use within the framework; consider Jakarta's Commons Lang >= 2.0 for a more comprehensive suite of assertion utilities.Další možnou variantou je knihovna Guava.
public void foo(final String request) { Preconditions.checkNotNull(request, "Parameter 'request' can't be null."); }Na té se mi ale nelíbí, že vyhazuje
NullPointerException
a varianta checkArgument
, která vyhazuje IllegalArgumentException
má vytaženou podmínku ven z metody, čímž se kontrola lehce komplikuje. public void foo(final String request) { Preconditions.checkArgument(request != null, "Parameter 'request' can't be null."); }Já osobně zůstanu u třídy
Validate
.
Jak validujete parametry metod vy?
1 komentář:
commons
Okomentovat