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ć.