Tôi thấy lợi ích của TDD, và tôi đang cố gắng học cách quấn đầu quanh nó. Tôi cũng đọc thêm về DDD và muốn bắt đầu áp dụng cả hai dự án này vào các dự án phần mềm của tôi.Bạn nên áp dụng TDD bao xa?
Tôi đã mua một vài cuốn sách lập trình "bằng tay", có nghĩa là những cuốn sách thảo luận về một ứng dụng thế giới thực với các giải pháp thực như trái ngược với các đoạn nhỏ) và tôi nhận thấy rằng chúng thường bắt đầu xác định tầng "cơ sở hạ tầng" của ứng dụng theo kiểu mã truyền thống đầu tiên, trái ngược với việc sử dụng TDD; cả hai cuốn sách đều đi ra ngoài để thảo luận về TDD tốt như thế nào và cách nghiên cứu tình huống sẽ sử dụng nó như thế nào.
Ví dụ: trong một trong các cuốn sách, Mạng xã hội ASP.NET 3.5, toàn bộ chương thứ hai phát triển lớp trình bao bọc nhật ký, lớp trình bao bọc email, lớp trình bao bọc Cache và phiên (và giao diện được liên kết) mà không cần chạm theo một bài kiểm tra đơn vị. Một cuốn sách khác, .NET Domain Driven Design với C#: Sự cố, Thiết kế, Giải pháp cũng tương tự, và tạo một lớp cơ sở và mã khung kho lưu trữ đầu tiên trước khi chạm vào mã "thực".
Tôi hiểu rằng bạn nên kiểm tra logic và chức năng thực tế của các lớp miền của bạn. Tôi đã nghĩ rằng "không kiểm tra đường ống dẫn nước" mã chỉ áp dụng cho mã mà bạn không viết (ví dụ như built-in. NET lớp học), nhưng những gì tôi đang đọc dường như chỉ ra/đề nghị rằng bạn chỉ nên kiểm tra mã mà thực sự phải làm với ứng dụng của bạn và không phải là hệ thống ống nước mà bạn viết để cung cấp nền tảng.
Đây có phải là cách chấp nhận được áp dụng TDD không?
Đó sẽ là điểm kiểm tra đơn vị, vâng. Tuy nhiên, điểm TDD là để cho các bài kiểm tra của bạn thúc đẩy thiết kế. Thiết kế thực sự cải thiện nếu bạn viết bài kiểm tra đầu tiên bởi vì nó làm cho bạn phát triển mã có thể kiểm thử và bạn phải suy nghĩ về thiết kế một cách có hệ thống trước khi bạn bắt đầu viết. – tvanfosson
Và hãy tưởng tượng, nếu bạn đã theo dõi liên kết, bạn đã thấy tôi tiếp tục với độ dài tuyệt vời nói chính xác điều đó. –
Mặc dù tôi thực sự thấy TDD là một phương pháp kỹ thuật nghiêm ngặt hơn. –