Tôi đang cố gắng tập thói quen viết bài kiểm tra đơn vị thường xuyên bằng mã của mình, nhưng tôi đã đọc rằng điều quan trọng đầu tiên là viết mã có thể kiểm tra được . Câu hỏi này liên quan đến các nguyên tắc RẮN của việc viết mã kiểm tra, nhưng tôi muốn biết liệu các nguyên tắc thiết kế đó có lợi (hoặc ít nhất là không có hại) mà không có kế hoạch viết thử nghiệm nào không. Để làm rõ - tôi hiểu tầm quan trọng của bài kiểm tra viết; đây không phải là một câu hỏi về tính hữu dụng của chúng
Để minh họa cho sự nhầm lẫn của tôi, trong tác phẩm đã truyền cảm hứng cho câu hỏi này, người viết đưa ra một ví dụ về chức năng kiểm tra thời gian hiện tại và trả về một số giá trị tùy thuộc vào thời gian. Tác giả chỉ ra đây là mã xấu vì nó tạo ra dữ liệu (thời gian) mà nó sử dụng nội bộ, do đó gây khó khăn cho việc kiểm tra. Đối với tôi, mặc dù, có vẻ như quá mức cần thiết để vượt qua trong thời gian như là một cuộc tranh luận. Tại một số điểm giá trị cần phải được khởi tạo, và tại sao không gần nhất với tiêu dùng? Thêm vào đó, mục đích của phương pháp trong tâm trí tôi là trả về một số giá trị dựa trên thời gian hiện tại , bằng cách biến nó thành một tham số mà bạn ngụ ý rằng mục đích này có thể / nên được thay đổi. Điều này và các câu hỏi khác, khiến tôi tự hỏi liệu mã có thể kiểm tra có đồng nghĩa với mã "tốt hơn" không.
Viết mã thử nghiệm vẫn còn thực hành tốt ngay cả khi không có thử nghiệm?
Là mã thử nghiệm thực sự ổn định hơn? đã được đề xuất như là một bản sao. Tuy nhiên, câu hỏi đó là về "tính ổn định" của mã, nhưng tôi đang hỏi rộng hơn về việc liệu mã có tốt hơn không vì những lý do khác, chẳng hạn như khả năng đọc, hiệu suất, khớp nối, v.v.
func(X)
trả về "Morning"
, sau đó thay thế tất cả các lần xuất hiện func(X)
bằng "Morning"
sẽ không thay đổi chương trình (ví dụ: gọi func
không làm gì khác ngoài trả về giá trị). Idempotency ngụ ý rằng func(func(X)) == X
(không đúng loại) hoặc func(X); func(X);
thực hiện các tác dụng phụ tương tự như func(X)
(nhưng không có tác dụng phụ nào ở đây)