Là truyền bá mã với các ý kiến ​​tái cấu trúc là một ý tưởng tốt?


11

Tôi đang làm việc trong một dự án "mã spaghetti" và trong khi tôi đang sửa lỗi và triển khai các tính năng mới, tôi cũng thực hiện một số phép tái cấu trúc để làm cho mã đơn vị có thể kiểm tra được.

Mã này thường được liên kết chặt chẽ hoặc phức tạp đến nỗi việc sửa một lỗi nhỏ sẽ dẫn đến rất nhiều lớp được viết lại. Vì vậy, tôi quyết định vẽ một dòng ở đâu đó trong mã nơi tôi dừng tái cấu trúc. Để làm rõ điều này, tôi bỏ một số ý kiến ​​trong mã giải thích tình huống, như:

class RefactoredClass {
    private SingletonClass xyz;

    // I know SingletonClass is a Singleton, so I would not need to pass it here.
    // However, I would like to get rid of it in the future, so it is passed as a
    // parameter here to make this change easier later.
    public RefactoredClass(SingletonClass xyz) {
        this.xyz = xyz;
    }
}

Hoặc, một miếng bánh khác:

// This might be a good candidate to be refactored. The structure is like:
// Version String
//    |
//    +--> ...
//    |
//    +--> ...
//          |
//    ... and so on ...    
//
Map map = new HashMap<String, Map<String, Map<String, List<String>>>>();

Đây có phải là một ý tưởng tốt? Tôi nên lưu ý gì khi làm như vậy?


1
liên quan / trùng lặp: Nhận xét TODO có ý nghĩa?
gnat

3
Đây là một chủ đề dựa trên ý kiến; nhưng ý kiến ​​cá nhân của tôi là đây chính xác là loại bình luận hữu ích và tôi muốn tìm thấy trong mã của người khác: nó cho bạn biết thông tin quan trọng chưa rõ ràng từ mã; không phải những gì một phương pháp làm, nhưng tại sao .
Kilian Foth

2
HashMap <Chuỗi, Bản đồ <Chuỗi, Bản đồ <Chuỗi, Danh sách <Chuỗi >>>>: o
lề

5
Nhận xét cho tôi biết lý do tại sao một đoạn mã trông có mùi được đánh giá cực kỳ cao. Tôi có thể không hiểu bạn về codebase, vì vậy tôi sẽ thấy một vấn đề và nghĩ "Cái quái gì vậy?", Nhưng một bình luận giải thích lý do tại sao nó sẽ giúp tôi vượt qua mã nhanh hơn. Vâng, rất nhiều làm điều này. (Tất nhiên, giả sử bạn không thể sửa mã thành không phải là WTF!)
Phoshi

Câu trả lời:


13

Là truyền bá mã với các ý kiến ​​tái cấu trúc là một ý tưởng tốt?

Nếu bạn đã phân bổ thời gian để hoàn thành việc tái cấu trúc của mình và nếu bạn thực sự làm điều đó, thì có - nó sẽ hoạt động.

Tôi nên lưu ý gì khi làm như vậy?

Các IDE hiện đại có một tùy chọn để tìm và hiển thị các dòng TODO. Thỉnh thoảng bạn nên kiểm tra chúng và cố gắng giảm số lượng của chúng bất cứ khi nào bạn có thể.


2

Tôi sẽ đưa ra các /// @todonhận xét như vậy cho doxygen hoặc thẻ tùy chỉnh dễ cài đặt cho javadoc , để nó được tự động trích xuất vào phần việc cần làm của các tài liệu API. Nhận xét đơn giản sẽ bị bỏ qua quá dễ dàng và cuối cùng bị lạc trong độ sâu của mã.


[Chỉnh sửa] BTW: đây có phải là một ý tưởng tốt:

Trong khi tôi đang sửa lỗi và triển khai các tính năng mới, tôi cũng thực hiện một số phép tái cấu trúc để làm cho mã đơn vị có thể kiểm tra được

Tôi nghĩ (biết theo kinh nghiệm!), Tái cấu trúc có thể rất nguy hiểm, đặc biệt là khi vẫn chưa có bài kiểm tra đơn vị. Vì vậy, tốt hơn hết bạn nên hạn chế công việc làm thêm của mình (khi sửa lỗi, v.v.) để thêm nhận xét việc cần làm ... Chúng ta đều biết: khi nào có thể;)


đoạn mã trong câu hỏi đọc như Java, tại sao bạn lại giới thiệu Doxygen?
gnat

Tôi đã biết rằng doxygen hỗ trợ @todo - đối với javadoc tôi không chắc chắn - nhưng ngôn ngữ có thực sự quan trọng như vậy không? Theo quan điểm của tôi, ví dụ java minh họa một vấn đề sâu sắc hơn.
Sói

1
@gnat: Bạn có nghĩ bây giờ tốt hơn không?
Sói
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.