Бих избегнал следното
sql.append("SELECT * FROM ").append("dogs_table");
sql.append(" WHERE ").append(colName).append("='");
sql.append(colValue).append("'");
и вместо това използвайте PreparedStatement
със свързаните с него методи за настройка на параметри (setString()
) и т.н. Това ще предотврати проблеми със стойностите за colValue
имащи кавички и атаки с инжектиране на SQL (или по-общо, colValue
формиране на някакъв SQL синтаксис).
Бих никога върнете нула, ако колекцията е просто празна. Това изглежда много противоинтуитивно и напълно неочаквано от гледна точка на клиента.
Не бих препоръчал връщане на нула в условия за грешка, тъй като клиентът ви трябва изрично да провери за това (и вероятно ще забрави). Бих върнал празна колекция, ако е необходимо (това може да е аналогично на коментара ви за нулев обект) или по-вероятно да пусна изключение (в зависимост от обстоятелствата и сериозността). Изключението е полезно с това, че ще носи известна информация, свързана с възникналата грешка. Null не ви казва нищо.
Какво трябва да направите, ако срещнете проблем, докато създавате Dog
обект ? Мисля, че това зависи от това колко стабилно и издръжливо искате да бъде вашето приложение. Проблем ли е да се върне подмножество от Dog
s, или би било напълно катастрофално и трябва да докладвате за това? Това е изискване за кандидатстване (трябваше да се погрижа за всеки сценарий в миналото - най-добро усилие или всичко или нищо ).
Няколко наблюдения. Бих използвал HashMap
вместо старата Hashtable
(синхронизиран за целия достъп и, което е по-важно, не е подходяща Collection
- ако имате Collection
можете да го предадете на всеки друг метод, очаквайки който и да е Collection
), и StringBuilder
през StringBuffer
поради подобни причини. Не е сериозен проблем, но си струва да се знае.