Tôi gặp phải mã này trong đó một cuộc gọi phương thức, ví dụ ClassA.search (a, b, flag) đang được sử dụng bởi 3 bộ điều khiển. Đây là phiên bản được đơn giản hóa của phương thức:Đây có phải là cách tốt để tái sử dụng/chia sẻ phương pháp không?
public List<Result> search(Object a, Object b, boolean flag) {
//do some code logic here, common to the 3 controllers
//at the middle there is:
if (flag) {
//code that affects 2 Controllers
} else {
//code affects only 1
}
//some more common code
//some more code with the flag if else
}
Đây có phải là ý tưởng hay vì mã được sử dụng lại? Hoặc là có cách nào tốt hơn để có thể tái sử dụng mã nhưng không giới thiệu cờ này cho tùy biến mã người gọi (khách hàng) (như có thể chia nhỏ thành 3 phương thức khác nhau nhưng vẫn có thể khai báo một phương thức mã hóa lại phổ biến)?
Tôi đồng ý với điều này miễn là bạn không kết thúc việc chuyển biến cục bộ thành các trường để làm cho nó hoạt động. –
Tại sao bạn thấy các biến cục bộ xấu? Nếu trạng thái bạn phải vượt qua và hơn thông qua các tham số rất quan trọng, hãy tạo đối tượng một lần với trạng thái được khởi tạo cho các trường cuối cùng trong hàm tạo và chỉ sử dụng nó một lần. Chức năng trên steroid ;-). –
Đó là sự thật tuy nhiên thêm một lớp với các lĩnh vực (và một nhà xây dựng?) Là rất nhiều công việc để tránh một lá cờ. ;) –