středa 19. října 2011
úterý 18. října 2011
Validace vstupních parametrů metod.
Všechny vstupní parametry metod je vhodné validovat na jejich korektnost dříve než se s nimi začne pracovat.
V 90% případů mi stačí zkontrolovat, že vstupní parametr není
Joshua Bloch radí vyhodit
Kód by mohl vypadat třeba takto
První možností je třída
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?
úterý 10. května 2011
YouTrack v jPower8
Při spouštění firmy jsme potřebovali vyřešit problém issue trackingu. Přestože je v open source komunitě spousta řešení, šáhli jsme nakonec po komerčním řešení.
Co nás přesvědčilo?
Interně používáme youtrack na řízení všech úkolů, které ve firmě řešíme. Dokonce naši zákazníci zapisují své připomínky a návrhy také do youtracku, kde průběžně vidí, jak se na nich pracuje. Šetříme tak čas svůj i zákazníka – prostě win-win strategie.
Používáme youtrack i jako vykazovací systém, ale o tom až příště.
Co nás přesvědčilo?
- Webové rozhraní - dostupnost i z domova i z práce.
- Extrémně jednoduché ovládání – ostatně jako u všech produktů jetbrains.
- Integrace na IntelliJ IDEA – umí dokonce i Jíru nebo PivotalTracker.
- Integrace do TeamCity – u každého issue vidíme, v jakých buildech se na úkolu pracovalo.
- Integrace na firemní LDAP.
- Neomezený počet projektů i uživatelů.
- Detailní možnosti nastavení přístupových práv.
- Restové rozhraní pro import i export dat.
- Přidávání custom políček a tagů.
- Rychlost vyhledávání.
Interně používáme youtrack na řízení všech úkolů, které ve firmě řešíme. Dokonce naši zákazníci zapisují své připomínky a návrhy také do youtracku, kde průběžně vidí, jak se na nich pracuje. Šetříme tak čas svůj i zákazníka – prostě win-win strategie.
Používáme youtrack i jako vykazovací systém, ale o tom až příště.
Přihlásit se k odběru:
Příspěvky (Atom)