Trước hết, bạn KHÔNG BAO GIỜ có tác dụng phụ trong truy vấn. Đó là một thực hành tồi tệ nhất. Truy vấn phải trả lời một câu hỏi, không tạo ra hiệu ứng.
Câu trả lời cho câu hỏi của bạn là: trả về truy vấn khi người gọi mong đợi một truy vấn; trả về một danh sách khi người gọi mong đợi một danh sách. Khi bạn thiết kế phương pháp của mình, hãy quyết định những gì người gọi có nhiều khả năng muốn, thực hiện điều đó và sau đó tài liệu nó.
Khi xem xét liệu người gọi muốn một truy vấn hoặc một danh sách, nghĩ về sự khác biệt giữa các truy vấn và danh sách:
truy vấn luôn up-to-date. Nếu các đối tượng/cơ sở dữ liệu/bất cứ điều gì truy vấn truy vấn chống lại thay đổi nội dung của nó, thì kết quả truy vấn sẽ thay đổi nếu bạn chạy lại truy vấn. Danh sách không thay đổi nội dung của chúng và do đó danh sách bị lỗi thời. Nếu người gọi của bạn yêu cầu dữ liệu mới nhất thì hãy cung cấp cho họ một truy vấn. Nếu họ yêu cầu ảnh chụp nhanh dữ liệu mà họ có thể kiểm tra lúc rảnh rỗi thì hãy cung cấp cho họ danh sách.
truy vấn có khả năng tốn kém để thực thi để có được kết quả của chúng. Danh sách có giá rẻ để có được kết quả của họ. Nếu người gọi có khả năng muốn thẩm vấn kết quả nhiều lần và hy vọng sẽ nhận được kết quả tương tự mỗi lần sau đó cung cấp cho họ một danh sách.
Xây dựng truy vấn là nhanh. Thực hiện truy vấn để tạo danh sách là chậm. Danh sách luôn thu được tất cả kết quả của truy vấn. Người gọi có thể muốn hạn chế hơn nữa truy vấn, bằng cách nói, chỉ lấy mười phần tử đầu tiên. Nếu người gọi không muốn hoặc cần phải thực hiện các chi phí của iterating hoàn toàn trên toàn bộ truy vấn sau đó cung cấp cho họ một truy vấn; không đưa ra quyết định đó thay mặt họ và đưa cho họ một danh sách.
truy vấn là nhỏ. Danh sách là lớn. Nhiều truy vấn có thể được lặp lại trên n mục trong không gian O (1); một danh sách có n mục chiếm không gian O (n). Nếu tập hợp kết quả là rất lớn thì việc đặt nó vào một danh sách có lẽ là không hiệu quả.
v.v.
Không có câu trả lời dễ dàng. Câu trả lời giống như câu trả lời cho bất kỳ vấn đề thiết kế nào khác: Hãy xem xét tất cả ưu và khuyết điểm của từng giải pháp có thể trong ngữ cảnh của những gì có khả năng nhất được người dùng muốn sử dụng, sau đó chọn giải pháp thỏa hiệp hợp lý.
Nguồn
2010-07-30 14:21:29
Bạn hiếm khi (không bao giờ?) Có tác dụng phụ trong truy vấn của mình. –