Bạn nên xóa đi b()
một khi nó không còn được sử dụng, vì lý do tương tự rằng nó mong muốn không thêm các chức năng không được sử dụng ở nơi đầu tiên. Cho dù bạn gọi nó là "khả năng đọc" hay cái gì khác, tất cả những thứ khác đều bằng nhau, đó là một cải tiến cho mã mà nó không chứa bất cứ thứ gì nó không sử dụng. Vì lợi ích của việc có ít nhất một biện pháp cụ thể mà tốt hơn là không nên có nó, loại bỏ nó đảm bảo rằng chi phí bảo trì trong tương lai của nó sau khi thay đổi đó bằng không!
Tôi chưa tìm thấy bất kỳ kỹ thuật đặc biệt nào cần thiết để thực sự loại bỏ nó bằng các thử nghiệm của nó, vì mọi suy nghĩ thay thế b()
bằng một thứ mới tất nhiên phải đi kèm với việc xem xét tất cả các mã hiện đang gọi b()
và các thử nghiệm là một tập hợp con của "tất cả mã ".
Dòng lý luận thường hoạt động với tôi là tại thời điểm mà tôi nhận thấy f()
đã b()
bị lỗi thời, do đó, b()
ít nhất nên bị phản đối, và tôi đang tìm kiếm tất cả các cuộc gọi b()
với ý định thay thế chúng bằng các cuộc gọi đến f()
, tôi cũng xem xét mã kiểm tra . Cụ thể, nếu b()
không còn cần thiết thì tôi có thể và nên loại bỏ các bài kiểm tra đơn vị của nó.
Bạn hoàn toàn chính xác rằng không có gì buộc tôi phải chú ý rằng điều đó b()
không còn cần thiết nữa. Đó là vấn đề về kỹ năng (và, như mỏng nói, báo cáo bảo hiểm mã trong các bài kiểm tra cấp cao hơn). Nếu chỉ kiểm tra đơn vị và không có kiểm tra chức năng, hãy tham khảo b()
, sau đó tôi có thể lạc quan một cách thận trọng rằng nó không phải là một phần của bất kỳ giao diện được xuất bản nào và do đó loại bỏ nó không phải là một thay đổi vi phạm đối với bất kỳ mã nào không thuộc quyền kiểm soát trực tiếp của tôi.
Chu trình đỏ / xanh / tái cấu trúc không đề cập rõ ràng đến việc xóa các kiểm tra. Hơn nữa, loại bỏ b()
vi phạm nguyên tắc mở / đóng vì rõ ràng thành phần của bạn đang mở để sửa đổi. Vì vậy, nếu bạn muốn nghĩ về bước này như một cái gì đó bên ngoài TDD đơn giản, hãy tiếp tục. Ví dụ: bạn có thể có một số quy trình để khai báo một bài kiểm tra "xấu", có thể được áp dụng trong trường hợp này để xóa bài kiểm tra với lý do nó kiểm tra một thứ không nên có (hàm không cần thiết b()
).
Tôi nghĩ rằng trong thực tế, hầu hết mọi người có thể cho phép thực hiện một số lượng thiết kế lại nhất định cùng với chu trình đỏ / xanh / tái cấu trúc hoặc họ coi việc loại bỏ các bài kiểm tra đơn vị dư thừa là một phần hợp lệ của "tái cấu trúc" mặc dù nói đúng nó không phải là tái cấu trúc Nhóm của bạn có thể quyết định bao nhiêu kịch tính và giấy tờ nên tham gia để chứng minh cho quyết định này.
Dù sao, nếu b()
quan trọng thì sẽ có các thử nghiệm chức năng cho nó và những thử nghiệm đó sẽ không bị loại bỏ nhẹ, nhưng bạn đã nói rằng chỉ có các thử nghiệm đơn vị. Nếu bạn không phân biệt chính xác giữa các thử nghiệm đơn vị (được viết theo thiết kế bên trong hiện tại của mã mà bạn đã thay đổi) và thử nghiệm chức năng (được viết thành giao diện được xuất bản, có lẽ bạn không muốn thay đổi) thì bạn cần thận trọng hơn về việc loại bỏ các bài kiểm tra đơn vị.