Kata #4: Tổ chức kế hoạch TDD
Mục tiêu: Sau quy trình TDD tổng quát, các kĩ năng viết test, dùng mock, test trong môi trường thực, kata này là để các bạn luyện cách tự tổ chức và lập kế hoạch TDD cho một bài toán cụ thể. Khác với Kata #3, tại kata này, thứ tự của các test có ảnh hưởng lớn đến năng suất lập trình và mức độ dễ khó. Qua vài vòng, các bạn sẽ rút được kinh nghiệm về cách xác định thứ tự tốt.
Lưu ý: Do mục tiêu luyện kĩ năng lập kế hoạch, nên mỗi ngày cần làm lại từ đầu với một project mới, mỗi ngày lặp lại cho đến khi nào tìm được kế hoạch tốt.
Đề bài:Dùng TDD để viết class SingleLinkedList - cấu trúc dữ liệu danh sách liên kết đơn dùng để lưu các đối tượng kiểu Object. SingleLinkedList cần cho phép thực hiện các thao tác sau:
- Khởi tạo đối tượng SingleLinkedList mới, là danh sách rỗng.
- Khởi tạo đối tượng SingleLinkedList mới từ một array of Object.
- list.size() - trả về số phần tử có mặt trong danh sách
- list.insertAfter(Node n, Object o) - chèn một phần tử mới chứa o vào sau nút n của danh sách
- list.delete(Node n) - xóa nút n khỏi danh sách
- list.first() trả về tham chiếu tới nút đầu tiên trong danh sách
- list.last() trả về tham chiếu tới nút cuối cùng trong danh sách
- list.before(Node n) trả về tham chiếu tới nút liền trước nút n (nếu có)
- list.after(Node n) trả về tham chiếu tới nút liền sau nút n (nếu có)
- list.find(Object o) trả về tham chiếu tới nút đầu tiên chứa dữ liệu là đối tượng o.
- list.append(Object data)- cho phép thêm một đối tượng vào cuối danh sách
- list.insertFirst(Object data)- cho phép thêm một đối tượng vào đầu danh sách
Chú ý để bộ test phủ hết các method và trường hợp có thể xảy ra. Nhưng có thể bỏ qua các trường hợp tham số Object là null.