Tôi là một người tin tưởng tuyệt vời vào Quy tắc Hướng đạo nam :
Luôn luôn kiểm tra một mô-đun sạch hơn so với khi bạn kiểm tra nó. "Cho dù tác giả ban đầu là ai, nếu chúng ta luôn nỗ lực, dù nhỏ đến đâu, để cải thiện mô-đun. Kết quả sẽ thế nào? Tôi nghĩ nếu chúng ta Tất cả đều tuân theo quy tắc đơn giản đó, chúng ta sẽ thấy sự kết thúc của sự suy giảm không ngừng của các hệ thống phần mềm của chúng ta. Thay vào đó, các hệ thống của chúng ta sẽ dần dần tốt hơn khi chúng phát triển. Chúng ta cũng sẽ thấy các nhóm chăm sóc toàn bộ hệ thống. hơn là chỉ những cá nhân chăm sóc cho phần nhỏ bé của riêng họ.
Tôi cũng là một người tin tưởng tuyệt vời vào ý tưởng liên quan đến Tái cấu trúc cơ hội :
Mặc dù có những nơi cho một số nỗ lực tái cấu trúc theo lịch trình, tôi thích khuyến khích tái cấu trúc như một hoạt động cơ hội, được thực hiện bất cứ khi nào và bất cứ nơi nào mã cần được làm sạch - bởi bất cứ ai. Điều này có nghĩa là bất cứ lúc nào ai đó thấy một số mã không rõ ràng như vậy, họ nên tận dụng cơ hội để sửa nó ngay tại đó và sau đó - hoặc ít nhất là trong vài phút
Đặc biệt lưu ý đoạn trích sau từ bài viết tái cấu trúc:
Tôi cảnh giác với bất kỳ thực tiễn phát triển nào gây ra xích mích cho tái cấu trúc cơ hội ... Ý thức của tôi là hầu hết các đội không thực hiện tái cấu trúc đủ, vì vậy điều quan trọng là phải chú ý đến bất cứ điều gì khiến mọi người không khuyến khích. Để giúp loại bỏ điều này, hãy chú ý bất cứ lúc nào bạn cảm thấy nản lòng khi thực hiện một phép tái cấu trúc nhỏ, một điều mà bạn chắc chắn sẽ chỉ mất một hoặc hai phút. Bất kỳ rào cản như vậy là một mùi nên nhắc nhở một cuộc trò chuyện. Vì vậy, hãy ghi lại sự chán nản và đưa nó lên với đội. Ít nhất nó nên được thảo luận trong quá trình hồi tưởng tiếp theo của bạn.
Nơi tôi làm việc, có một thực tiễn phát triển gây ra ma sát nặng nề - Đánh giá mã (CR). Bất cứ khi nào tôi thay đổi bất cứ điều gì không nằm trong phạm vi "nhiệm vụ" của tôi, tôi đều bị những người đánh giá của tôi khiển trách rằng tôi đang thực hiện thay đổi khó hơn để xem xét. Điều này đặc biệt đúng khi tái cấu trúc có liên quan, vì nó làm cho việc so sánh khác biệt "theo từng dòng" trở nên khó khăn. Cách tiếp cận này là tiêu chuẩn ở đây, có nghĩa là tái cấu trúc cơ hội hiếm khi được thực hiện và chỉ tái cấu trúc "theo kế hoạch" (thường là quá ít, quá muộn), nếu có.
Tôi cho rằng các lợi ích là xứng đáng và 3 người đánh giá sẽ làm việc chăm chỉ hơn một chút (để thực sự hiểu mã trước và sau, thay vì nhìn vào phạm vi hẹp của các dòng thay đổi - bản thân đánh giá sẽ tốt hơn do chỉ có một mình ) để 100 nhà phát triển tiếp theo đọc và duy trì mã sẽ được hưởng lợi. Khi tôi trình bày lập luận này, những người đánh giá của tôi, họ nói rằng họ không có vấn đề gì với việc tái cấu trúc của tôi, miễn là nó không nằm trong cùng một CR. Tuy nhiên tôi khẳng định đây là một huyền thoại:
(1) Hầu hết các lần bạn chỉ nhận ra điều gì và cách bạn muốn cấu trúc lại khi bạn đang ở giữa nhiệm vụ. Như Martin Fowler nói:
Khi bạn thêm chức năng, bạn nhận ra rằng một số mã bạn đang thêm chứa một số trùng lặp với một số mã hiện có, vì vậy bạn cần cấu trúc lại mã hiện có để dọn dẹp mọi thứ ... Bạn có thể làm việc gì đó, nhưng nhận ra rằng nó sẽ hoạt động tốt hơn nếu sự tương tác với các lớp hiện tại đã được thay đổi. Hãy nắm lấy cơ hội đó để làm điều đó trước khi bạn xem xét bản thân mình.
(2) Không ai sẽ có vẻ thuận lợi khi bạn phát hành CR "tái cấu trúc" mà bạn không cần phải làm. CR có một chi phí nhất định và người quản lý của bạn không muốn bạn "lãng phí thời gian" vào việc tái cấu trúc. Khi nó đi kèm với thay đổi mà bạn phải làm, vấn đề này được giảm thiểu.
Vấn đề trở nên trầm trọng hơn bởi Resharper, vì mỗi tệp mới tôi thêm vào thay đổi (và tôi không thể biết trước chính xác tệp nào sẽ thay đổi) thường bị vấy bẩn bởi các lỗi và đề xuất - hầu hết đều được phát hiện và hoàn toàn xứng đáng sửa chữa
Kết quả cuối cùng là tôi thấy mã khủng khiếp, và tôi chỉ để nó ở đó. Trớ trêu thay, tôi cảm thấy rằng việc sửa mã như vậy không những không giúp cải thiện vị trí của tôi, mà còn thực sự hạ thấp họ và coi tôi là anh chàng "không tập trung", lãng phí thời gian để sửa chữa những thứ không ai quan tâm thay vì làm công việc của mình. Tôi cảm thấy tồi tệ về điều đó bởi vì tôi thực sự coi thường mã xấu và không thể đứng xem nó, chứ đừng nói đến việc gọi nó từ phương thức của tôi!
Bất kỳ suy nghĩ về làm thế nào tôi có thể khắc phục tình trạng này?
your manager doesn't want you to "waste your time" on refactoring