Bản năng thông thường là loại bỏ bất kỳ sự trùng lặp mã nào mà bạn thấy trong mã. Tuy nhiên, tôi thấy mình trong một tình huống mà sự trùng lặp là ảo tưởng .
Để mô tả tình huống chi tiết hơn: Tôi đang phát triển một ứng dụng web và hầu hết các chế độ xem đều giống nhau - chúng hiển thị danh sách các mục mà người dùng có thể cuộn và chọn, danh sách thứ hai chứa các mục đã chọn và "Lưu "Để lưu danh sách mới.
Dường như với tôi rằng vấn đề là dễ dàng. Tuy nhiên, mỗi chế độ xem có một quirks riêng - đôi khi bạn cần tính toán lại một cái gì đó, đôi khi bạn phải lưu trữ một số dữ liệu bổ sung, v.v. Những điều này, tôi đã giải quyết bằng cách chèn các móc gọi lại trong mã logic chính.
Có rất nhiều sự khác biệt nhỏ giữa các khung nhìn mà nó ngày càng trở nên ít bảo trì hơn, bởi vì tôi cần cung cấp các cuộc gọi lại về cơ bản cho tất cả các chức năng, và logic chính bắt đầu giống như một chuỗi các lệnh gọi lại rất lớn. Cuối cùng, tôi không tiết kiệm bất kỳ thời gian hay mã nào, bởi vì mọi chế độ xem đều có mã riêng được thực thi - tất cả trong các cuộc gọi lại.
Các vấn đề là:
- sự khác biệt rất nhỏ đến mức mã trông gần như giống hệt nhau trong tất cả các khung nhìn,
- Có rất nhiều sự khác biệt mà khi bạn nhìn vào các chi tiết, để mã không giống nhau một chút
Tôi nên xử lý tình huống này như thế nào?
Là có logic cốt lõi bao gồm hoàn toàn các cuộc gọi lại là một giải pháp tốt?
Hay tôi nên sao chép mã và loại bỏ sự phức tạp của mã dựa trên cuộc gọi lại?