Tương tự như Does TDD mean not thinking about class design?, tôi đang gặp khó khăn khi nghĩ về giai đoạn "thiết kế" truyền thống phù hợp với TDD.Làm cách nào để thiết kế các hệ thống phức tạp với TDD?
Theo trò chơi Bowling Kata (phiên bản 'trò chuyện', có liên kết thoát tôi vào lúc này) TDD dường như bỏ qua các quyết định thiết kế được thực hiện sớm (loại bỏ đối tượng khung, đối tượng cuộn, v.v.). Tôi có thể thấy trong ví dụ đó là một ý tưởng tốt để làm theo các bài kiểm tra và bỏ qua những suy nghĩ thiết kế ban đầu của bạn, nhưng trong các dự án lớn hơn hoặc những dự án bạn muốn mở rộng để mở rộng/tùy chỉnh, sẽ không tốt hơn để đưa mọi thứ vào rằng bạn không có kiểm tra hoặc không có nhu cầu ngay lập tức để tránh ghi đè tốn thời gian sau này?
Tóm lại, có bao nhiêu thiết kế quá nhiều khi thực hiện TDD và tôi nên theo thiết kế như thế nào khi tôi viết kiểm tra và mã để vượt qua chúng (bỏ qua thiết kế của tôi để chỉ lo lắng về việc vượt qua bài kiểm tra)?
Hoặc tôi lo lắng về không có gì, và mã viết đơn giản để làm theo các bài kiểm tra là không (trong thực tế) khó viết lại hoặc tái cấu trúc nếu bạn được vẽ thành một góc? Ngoài ra, tôi có thiếu điểm và rằng tôi phải là mong muốn để viết lại các phần của mã khi tôi đến để kiểm tra một phần chức năng mới?
+1 cho 'Phần TDD là tái cấu trúc': Thiết kế sẽ cần được cập nhật để phản ánh các thay đổi cần thiết trong khi thử nghiệm. –
Cảm ơn sau đó - vì vậy tôi đang thiếu điểm, và tái cấu trúc/viết lại là một phần của thiết kế nổi bật này. Tốt để biết, bây giờ để thử nó ra với một cái gì đó! –