Jeg ville undgå følgende
sql.append("SELECT * FROM ").append("dogs_table");
sql.append(" WHERE ").append(colName).append("='");
sql.append(colValue).append("'");
og brug i stedet en PreparedStatement
med dens tilknyttede parametersætmetoder (setString()
) osv. Dette vil forhindre problemer med værdier for colValue
at have anførselstegn og SQL-injektionsangreb (eller mere generelt colValue
). danner en eller anden SQL-syntaks).
Jeg ville aldrig returner et nul, hvis samlingen blot var tom. Det virker meget kontraintuitivt og helt uventet fra kundens synspunkt.
Jeg vil ikke anbefale at returnere et nul i fejltilstande, da din klient eksplicit skal tjekke for dette (og sandsynligvis vil glemme). Jeg ville returnere en tom samling, hvis det skulle være nødvendigt (dette kan være analogt med din kommentar om et nulobjekt), eller mere sandsynligt afgive en undtagelse (afhængigt af omstændighederne og alvoren). Undtagelsen er nyttig, fordi den vil indeholde nogle oplysninger om den stødte fejl. Null fortæller dig ingenting.
Hvad skal du gøre, hvis du støder på et problem, mens du bygger en Dog
objekt? Jeg tror, det afhænger af, hvor robust og modstandsdygtig du ønsker, at din ansøgning skal være. Er det et problem at returnere et undersæt af Dog
s, eller ville det være fuldstændig katastrofalt, og du skal rapportere dette? Det er et ansøgningskrav (jeg har tidligere været nødt til at tage højde for begge scenarier - bedste indsats eller alt-eller-intet ).
Et par observationer. Jeg ville bruge HashMap
i stedet for den gamle Hashtable
(synkroniseret for al adgang og, endnu vigtigere, ikke en ordentlig Collection
- hvis du har en Collection
du kan overføre det til en hvilken som helst anden metode og forvente hvilken som helst Collection
), og StringBuilder
over StringBuffer
af lignende årsager. Ikke et stort problem, men værd at vide.