Tôi hiện đang đọc hai cuốn sách tuyệt vời "Làm việc hiệu quả với Mã kế thừa" và "Mã sạch".Tái cấu trúc và kiểm tra phát triển theo hướng
Họ đang làm cho tôi suy nghĩ về cách viết và làm việc với mã theo những cách hoàn toàn mới nhưng một chủ đề phổ biến trong số đó là phát triển theo thử nghiệm và ý tưởng che giấu mọi thứ với các bài kiểm tra và kiểm tra tại chỗ trước khi bạn thực hiện thay đổi hoặc triển khai một chức năng mới.
này đã dẫn đến hai câu hỏi:
Câu hỏi 1: Nếu tôi làm việc với mã di sản. Theo những cuốn sách tôi nên đặt thử nghiệm tại chỗ để đảm bảo tôi không phá vỡ bất cứ điều gì. Hãy xem xét rằng tôi có một phương pháp 500 dòng dài. Tôi sẽ giả sử tôi sẽ có một tập hợp các phương pháp thử nghiệm tương đương để kiểm tra phương pháp đó. Khi tôi chia chức năng này lên, tôi có tạo các thử nghiệm mới cho mỗi phương thức/lớp mới có kết quả không?
Theo "Mã sạch", bất kỳ thử nghiệm nào mất nhiều hơn 1/10 giây là thử nghiệm mất quá nhiều thời gian. Đang cố gắng thử nghiệm một phương pháp kế thừa dài dòng 500 đi vào cơ sở dữ liệu và thần biết những gì khác có thể mất nhiều thời gian hơn 1/10 giây. Mặc dù tôi hiểu rằng bạn cần phải phá vỡ các phụ thuộc mà tôi gặp phải vấn đề là việc tạo thử nghiệm ban đầu.
Câu hỏi 2: Điều gì sẽ xảy ra khi mã được tái cấu trúc quá nhiều đến mức cấu trúc không còn giống với mã ban đầu (thông số mới được thêm/xóa vào phương thức, v.v.). Nó sẽ làm theo mà các xét nghiệm sẽ cần phải bao thanh toán lại cũng? Trong trường hợp đó, bạn có khả năng có thể thay đổi chức năng của hệ thống trong khi cho phép các bài kiểm tra tiếp tục đi qua? Việc kiểm tra lại có phải là một điều thích hợp để làm trong hoàn cảnh này không?
Trong khi nó ok để plod trên với giả định tôi đã tự hỏi liệu có bất kỳ suy nghĩ/đề xuất về những vấn đề như vậy từ một kinh nghiệm tập thể.
tái cấu trúc là bảo quản hành vi - được thi hành bởi các thử nghiệm của bạn. Vì vậy, nếu bạn thay đổi hành vi thông qua các sửa đổi của bạn, bạn không còn tái cấu trúc nữa. Đối với mã kế thừa, bạn thêm các thử nghiệm hoạt động như một phó để giữ SUT tại chỗ trong khi bạn cải thiện thiết kế theo hướng thử nghiệm. Các xét nghiệm này có thể chậm .. hướng dẫn của 0.1 là dành cho các xét nghiệm microtests/unit. Lý do cho hướng dẫn đó là bạn có thể có hàng ngàn bài kiểm tra nhỏ như vậy .. nếu họ lấy 0.1s mỗi bài, bạn có thể chờ đợi một thời gian dài cho mỗi lần bạn chạy chúng. – Gishu