Vyhnul bych se následujícímu
sql.append("SELECT * FROM ").append("dogs_table");
sql.append(" WHERE ").append(colName).append("='");
sql.append(colValue).append("'");
a místo toho použijte PreparedStatement
s přidruženými metodami nastavení parametrů (setString()
) atd. Předejdete tak problémům s hodnotami pro colValue
s uvozovkami a útoky SQL injection (nebo obecněji colValue
tvoří nějakou syntaxi SQL).
To bych nikdy vrátit hodnotu null, pokud byla kolekce pouze prázdná. To se zdá být velmi kontraintuitivní a z pohledu klienta zcela nečekané.
Nedoporučoval bych vracet hodnotu null v chybových podmínkách, protože váš klient to musí výslovně zkontrolovat (a pravděpodobně zapomene). V případě potřeby bych vrátil prázdnou sbírku (může to být analogické s vaším komentářem o nulovém objektu), nebo pravděpodobněji vyvolám výjimku (v závislosti na okolnostech a závažnosti). Výjimka je užitečná v tom, že ponese nějaké informace týkající se zjištěné chyby. Null vám nic neřekne.
Co byste měli dělat, když narazíte na problém při sestavování Dog
objekt? Myslím, že to závisí na tom, jak robustní a odolný chcete, aby vaše aplikace byla. Je problém vrátit podmnožinu Dog
s, nebo by to bylo naprosto katastrofální a musíte to nahlásit? To je požadavek aplikace (v minulosti jsem se musel postarat o oba scénáře – nejlepší úsilí nebo vše nebo nic ).
Pár postřehů. Použil bych HashMap
spíše než starý Hashtable
(synchronizováno pro veškerý přístup a, což je důležitější, není správná Collection
- pokud máte Collection
můžete jej předat jakékoli jiné metodě, která očekává jakékoli Collection
) a StringBuilder
přes StringBuffer
z podobných důvodů. Není to zásadní problém, ale stojí za to vědět.