Thỉnh thoảng tôi chạy vào các phương thức mà nhà phát triển đã chọn trả về một cái gì đó không quan trọng đối với chức năng. Ý tôi là, khi nhìn vào mã, nó rõ ràng hoạt động tốt như một void
và sau một lúc suy nghĩ, tôi hỏi "Tại sao?" Điều này nghe có vẻ quen thuộc phải không?
Đôi khi tôi đồng ý rằng thường thì tốt hơn là trả lại một cái gì đó như một bool
, hoặc int
sau đó chỉ cần làm một void
. Mặc dù vậy, tôi không chắc chắn, trong bức tranh lớn, về những ưu và nhược điểm.
Tùy thuộc vào tình huống, trả về một int
có thể làm cho người gọi nhận biết số lượng hàng hoặc đối tượng bị ảnh hưởng bởi phương thức (ví dụ: 5 bản ghi được lưu vào MSSQL). Nếu một phương thức như "Chèn một cái gì đó" trả về một boolean, tôi có thể có phương thức được thiết kế để trả về true
nếu thành công, khác false
. Người gọi có thể chọn hành động hoặc không dựa trên thông tin đó.
Mặt khác,
- Nó có thể dẫn đến một mục đích ít rõ ràng hơn của một cuộc gọi phương thức? Mã hóa xấu thường buộc tôi phải kiểm tra lại nội dung phương thức. Nếu nó trả về một cái gì đó, nó sẽ cho bạn biết rằng phương thức đó thuộc loại bạn phải làm một cái gì đó với kết quả được trả về.
- Một vấn đề khác là, nếu bạn không biết cách triển khai phương thức, nhà phát triển đã quyết định trả lại cái gì không quan trọng? Tất nhiên bạn có thể nhận xét nó.
- Giá trị trả về phải được xử lý, khi quá trình xử lý có thể kết thúc tại khung đóng của phương thức.
- Điều gì xảy ra dưới mui xe? Có phải phương thức được gọi là
false
do lỗi ném? Hoặc nó đã trả về sai do kết quả đánh giá?
Kinh nghiệm của bạn với điều này là gì? Làm thế nào bạn sẽ hành động về điều này?
void
ít nhất cho nhà phát triển biết rằng giá trị trả về của phương thức là không quan trọng; nó thực hiện một hành động, thay vì tính toán một giá trị.