Tôi muốn tránh những điều sau
sql.append("SELECT * FROM ").append("dogs_table");
sql.append(" WHERE ").append(colName).append("='");
sql.append(colValue).append("'");
và thay vào đó, hãy sử dụng Chuẩn bị sẵn sàng
với các phương thức thiết lập tham số được liên kết của nó (setString()
) v.v ... Điều này sẽ ngăn chặn sự cố với các giá trị cho colValue
có dấu ngoặc kép và các cuộc tấn công chèn SQL (hoặc nói chung là colValue
tạo một số cú pháp SQL).
Tôi sẽ không bao giờ trả về giá trị null nếu bộ sưu tập chỉ trống rỗng. Điều đó có vẻ rất phản trực giác và hoàn toàn bất ngờ theo quan điểm của khách hàng.
Tôi không khuyên bạn nên trả về giá trị null trong các điều kiện lỗi, vì khách hàng của bạn phải kiểm tra rõ ràng điều này (và có thể sẽ quên). Tôi sẽ trả lại một bộ sưu tập trống nếu cần (điều này có thể tương tự với nhận xét của bạn là một đối tượng rỗng), hoặc nhiều khả năng sẽ đưa ra một ngoại lệ (tùy thuộc vào trường hợp và mức độ nghiêm trọng). Ngoại lệ hữu ích ở chỗ nó sẽ mang một số thông tin liên quan đến lỗi gặp phải. Null không nói gì với bạn.
Bạn nên làm gì nếu gặp sự cố trong khi xây dựng Dog
vật ? Tôi nghĩ rằng điều đó phụ thuộc vào việc bạn muốn ứng dụng của mình trở nên mạnh mẽ và linh hoạt như thế nào. Có vấn đề gì không khi trả về một tập hợp con của Dog
s, hoặc nó sẽ hoàn toàn thảm khốc và bạn cần phải báo cáo điều này? Đó là yêu cầu ứng dụng (trước đây tôi đã phải đáp ứng cho cả hai trường hợp - nỗ lực hết mình hoặc tất cả hoặc không có gì ).
Một vài nhận xét. Tôi sẽ sử dụng HashMap
thay vì Hashtable
cũ (được đồng bộ hóa cho tất cả quyền truy cập và quan trọng hơn, không phải là một Collection
thích hợp - nếu bạn có Collection
bạn có thể chuyển nó đến bất kỳ phương thức nào khác mong đợi bất kỳ Collection
) và StringBuilder
qua StringBuffer
vì những lý do tương tự. Không phải là một vấn đề lớn, nhưng đáng để biết.