Trước hết, TDD không bắt buộc bạn phải viết mã RẮN. Bạn có thể làm TDD và tạo một mớ hỗn độn lớn nếu bạn muốn.
Tất nhiên, việc biết các nguyên tắc RẮN sẽ giúp ích, bởi vì nếu không, bạn có thể sẽ không có câu trả lời tốt cho nhiều vấn đề của mình và do đó viết mã xấu kèm theo các bài kiểm tra xấu.
Nếu bạn đã biết về các nguyên tắc RẮN, TDD sẽ khuyến khích bạn suy nghĩ về chúng và sử dụng chúng một cách tích cực.
Điều đó nói rằng, nó không nhất thiết bao gồm tất cả các chữ cái trong RẮN , nhưng nó khuyến khích và khuyến khích bạn viết ít nhất một phần mã RẮN, bởi vì nó làm cho hậu quả của việc không thực hiện ngay lập tức và gây khó chịu.
Ví dụ:
- Bạn cần viết mã tách rời để bạn có thể chế giễu những gì bạn cần. Điều này hỗ trợ Nguyên tắc đảo ngược phụ thuộc .
- Bạn cần viết các bài kiểm tra rõ ràng và ngắn gọn để bạn không phải thay đổi quá nhiều trong các bài kiểm tra (có thể trở thành một nguồn gây nhiễu mã lớn nếu được thực hiện theo cách khác). Điều này hỗ trợ Nguyên tắc Trách nhiệm duy nhất .
- Điều này có thể được tranh luận, nhưng Nguyên tắc phân chia giao diện cho phép các lớp phụ thuộc vào các giao diện nhẹ hơn giúp việc theo dõi và hiểu dễ dàng hơn, bởi vì bạn không phải hỏi "Tại sao 5 phương thức này cũng bị chế giễu?", Hoặc thậm chí quan trọng hơn, bạn không có nhiều sự lựa chọn khi quyết định phương pháp nào để chế giễu. Điều này là tốt khi bạn không thực sự muốn xem qua toàn bộ mã của lớp trước khi bạn kiểm tra nó, và chỉ cần sử dụng thử và lỗi để có được sự hiểu biết cơ bản về cách thức hoạt động của nó.
Tuân thủ nguyên tắc Mở / Đóng cũng có thể giúp kiểm tra được viết sau mã, bởi vì nó thường cho phép bạn ghi đè các cuộc gọi dịch vụ bên ngoài trong các lớp kiểm tra xuất phát từ các lớp được kiểm tra. Trong TDD tôi tin rằng điều này không được yêu cầu như các nguyên tắc khác, nhưng tôi có thể bị nhầm lẫn.
Tuân thủ quy tắc thay thế Liskov là tuyệt vời nếu bạn muốn giảm thiểu các thay đổi cho lớp của mình để nhận một cá thể không được hỗ trợ, tình cờ thực hiện cùng một giao diện được nhập tĩnh, nhưng nó không có khả năng xảy ra trong các trường hợp kiểm tra thích hợp vì bạn nói chung sẽ không vượt qua bất kỳ thử nghiệm dưới lớp nào trong các triển khai trong thế giới thực của các phụ thuộc của nó.
Quan trọng nhất, các nguyên tắc RẮN đã được thực hiện để khuyến khích bạn viết mã sạch hơn, dễ hiểu hơn và có thể duy trì được, và TDD cũng vậy. Vì vậy, nếu bạn thực hiện TDD đúng cách và bạn chú ý đến cách mã và các bài kiểm tra của bạn trông như thế nào (và nó không quá khó vì bạn nhận được phản hồi ngay lập tức, API và tính đúng đắn), nói chung, bạn có thể bớt lo lắng về các nguyên tắc RẮN.