Saya akan menghindari
. berikut sql.append("SELECT * FROM ").append("dogs_table");
sql.append(" WHERE ").append(colName).append("='");
sql.append(colValue).append("'");
dan sebagai gantinya gunakan PreparedStatement
dengan metode penyetel parameter terkaitnya (setString()
) dll. Ini akan mencegah masalah dengan nilai untuk colValue
memiliki tanda kutip, dan serangan injeksi SQL (atau lebih umum, colValue
membentuk beberapa sintaks SQL).
Saya tidak akan tidak pernah kembalikan null jika koleksinya hanya kosong. Tampaknya sangat kontra-intuitif, dan sama sekali tidak terduga dari sudut pandang klien.
Saya tidak akan merekomendasikan mengembalikan nol dalam kondisi kesalahan, karena klien Anda harus secara eksplisit memeriksa ini (dan mungkin akan lupa). Saya akan mengembalikan koleksi kosong jika perlu (ini mungkin analog dengan komentar Anda tentang objek nol), atau lebih mungkin melemparkan pengecualian (tergantung pada keadaan dan tingkat keparahannya). Pengecualian berguna karena akan membawa beberapa informasi yang berkaitan dengan kesalahan yang dihadapi. Null tidak memberi tahu Anda apa pun.
Apa yang harus Anda lakukan jika mengalami masalah saat membangun Dog
objek? Saya pikir itu tergantung pada seberapa kuat dan tangguh aplikasi yang Anda inginkan. Apakah masalah untuk mengembalikan subset dari Dog
s, atau apakah itu benar-benar bencana dan Anda perlu melaporkan ini? Itu adalah persyaratan aplikasi (saya harus memenuhi salah satu skenario di masa lalu - upaya terbaik atau semua atau tidak sama sekali ).
Beberapa pengamatan. Saya akan menggunakan HashMap
daripada Hashtable
yang lama (disinkronkan untuk semua akses dan , yang lebih penting, bukan Collection
yang tepat - jika Anda memiliki Collection
Anda dapat meneruskannya ke metode lain yang mengharapkan apa saja Collection
), dan StringBuilder
melalui StringBuffer
untuk alasan serupa. Bukan masalah besar, tapi perlu diketahui.