Unikałbym następujących
sql.append("SELECT * FROM ").append("dogs_table");
sql.append(" WHERE ").append(colName).append("='");
sql.append(colValue).append("'");
zamiast tego użyj PreparedStatement
z powiązanymi metodami ustawiania parametrów (setString()
) itp. Zapobiegnie to problemom z wartościami dla colValue
posiadanie cudzysłowów i ataki typu SQL injection (lub bardziej ogólnie, colValue
tworząc jakąś składnię SQL).
nigdy zwróć wartość null, jeśli kolekcja była po prostu pusta. Wydaje się to bardzo sprzeczne z intuicją i całkowicie nieoczekiwane z punktu widzenia klienta.
Nie zalecałbym zwracania wartości null w warunkach błędu, ponieważ klient musi to wyraźnie sprawdzić (i prawdopodobnie zapomni). W razie potrzeby zwróciłbym pustą kolekcję (może to być analogiczne do twojego komentarza dotyczącego obiektu zerowego) lub, co bardziej prawdopodobne, rzuciłbym wyjątek (w zależności od okoliczności i wagi). Wyjątek jest przydatny, ponieważ zawiera pewne informacje dotyczące napotkanego błędu. Null nic ci nie powie.
Co powinieneś zrobić, jeśli napotkasz problem podczas budowania Dog
? obiekt ? Myślę, że to zależy od tego, jak solidna i elastyczna ma być Twoja aplikacja. Czy zwrócenie podzbioru Dog
jest problemem? s, czy byłoby to kompletnie katastrofalne i trzeba to zgłosić ? Jest to wymóg dotyczący aplikacji (w przeszłości musiałem uwzględnić oba scenariusze — najlepszy wysiłek lub wszystko albo nic ).
Kilka obserwacji. Używałbym HashMap
zamiast starego Hashtable
(zsynchronizowany dla wszystkich dostępów i, co ważniejsze, nie właściwa Collection
- jeśli masz Collection
możesz przekazać go do dowolnej innej metody, oczekując dowolnej Collection
) oraz StringBuilder
ponad StringBuffer
z podobnych powodów. Nie jest to poważny problem, ale warto wiedzieć.