Nhóm phát triển của tôi đã bắt đầu sử dụng Mockito và có các lớp học đã được định nghĩa là 'cuối cùng'. Tôi đã đọc trong Java hiệu quả của Joshua Bloch và trong chủ đề SO When to use final rằng tất cả các lớp nên sử dụng công cụ sửa đổi cuối cùng. Đã có một số bất đồng trong chuỗi, nhưng tôi đồng ý với ý tưởng ép buộc bố cục lớp trừ khi thừa kế có ý nghĩa.Việc cần làm khi thực hành tốt nhất của Java xung đột với Mockito
Tôi nên làm gì khi tôi muốn kiểm tra các lớp bằng cách sử dụng khung kiểm tra như Mockito yêu cầu lớp học không có công cụ sửa đổi 'cuối cùng'? Tôi hy vọng người khác đã gặp phải các vấn đề tương tự trong quá trình phát triển của họ. Nhóm phát triển của bạn đã đạt được giải pháp nào?
Có hai câu trả lời rõ ràng như sử dụng JMock hoặc loại bỏ sửa đổi cuối cùng trên các lớp chúng tôi muốn kiểm tra, nhưng chúng tôi muốn gắn bó với một khung kiểm tra bên ngoài (bên cạnh JUnit) và có thể khó thuyết phục người khác các nhà phát triển để loại bỏ công cụ sửa đổi 'cuối cùng'.
Cảm ơn.
Làm tất cả các lớp * * 'final' chắc chắn không phải là thực hành tốt nhất ... đã lâu rồi kể từ khi đọc Java hiệu quả, nhưng sự đồng thuận của chuỗi được liên kết chắc chắn dường như không ngụ ý rằng. Bạn nên đánh dấu các lớp 'final' để biểu thị có một số lý do chúng không nên được mở rộng - nếu không có lý do gì, nó chỉ thêm vào sự phức tạp không cần thiết - như bạn đã tìm thấy. Ngoài ra, nếu bạn nhận ra bạn cần mở rộng lớp ở đâu đó trên đường, bạn phải thay đổi mã của lớp gốc để viết lớp mới - vi phạm nguyên tắc Mở/Đóng. – Nate