Gần đây tôi bắt đầu làm việc với một dự án trong đó một ứng dụng nguyên khối rất cũ đang được chuyển sang kiến trúc dựa trên microservice.
Cơ sở mã di sản rất lộn xộn ('mã spaghetti') và thường là một hàm rõ ràng đơn giản (ví dụ: "MultiplyValueByTen") sau đó cho thấy chính nó là "hàng ngàn dòng mã xác thực liên quan đến 10 bảng trên 3 lược đồ khác nhau".
Bây giờ ông chủ của tôi (đúng) yêu cầu tôi ước tính sẽ mất bao lâu để viết tính năng X trong kiến trúc mới. Nhưng tôi đang gặp khó khăn khi đưa ra một ước tính thực tế; thường tôi cực kỳ đánh giá thấp công việc vì lý do tôi đã nêu ở trên và gây rắc rối cho bản thân mình bởi vì tôi không thể hoàn thành trong thời gian.
Điều hợp lý dường như có thể thực sự đi vào mã, lưu ý mọi chi nhánh và gọi đến các chức năng khác và sau đó ước tính chi phí thời gian. Nhưng thực sự có một sự khác biệt rất nhỏ giữa việc ghi lại mã cũ và thực sự viết ra phiên bản mới.
Làm thế nào tôi nên tiếp cận một kịch bản như thế này?
Trong khi tôi hoàn toàn hiểu cách tái cấu trúc mã kế thừa hoạt động, câu hỏi của tôi không phải là "làm thế nào để thực hiện tái cấu trúc / viết lại?" nhưng về việc đưa ra một câu trả lời thực tế cho "mất bao lâu để tái cấu trúc / viết lại phần X?"