Tôi muốn hỏi mọi người, trong trường hợp này có ý nghĩa để kiểm tra đơn vị mã chức năng được nhập tĩnh, như được viết bằng haskell, scala, ocaml, nemerle, f # hoặc haXe (cuối cùng là điều tôi thực sự quan tâm, nhưng tôi muốn khai thác kiến thức của các cộng đồng lớn hơn).
Tôi hỏi điều này bởi vì từ sự hiểu biết của tôi:
Một khía cạnh của các bài kiểm tra đơn vị là có các thông số kỹ thuật ở dạng có thể chạy được. Tuy nhiên, khi sử dụng một kiểu khai báo, ánh xạ trực tiếp các thông số kỹ thuật chính thức vào ngữ nghĩa ngôn ngữ, thậm chí có thể thực sự thể hiện các thông số kỹ thuật ở dạng có thể chạy theo một cách riêng biệt, điều đó làm tăng giá trị?
Khía cạnh rõ ràng hơn của các bài kiểm tra đơn vị là theo dõi các lỗi không thể tiết lộ thông qua phân tích tĩnh. Cho rằng loại mã chức năng an toàn là một công cụ tốt để mã rất gần với những gì máy phân tích tĩnh của bạn hiểu, có vẻ như bạn có thể chuyển nhiều an toàn sang phân tích tĩnh. Tuy nhiên, một lỗi đơn giản như sử dụng
x
thay vìy
(cả hai đều là tọa độ) trong mã của bạn có thể được bảo vệ. OTOH một lỗi như vậy cũng có thể phát sinh trong khi viết mã kiểm tra, vì vậy tôi không chắc liệu nó có đáng để nỗ lực hay không.Các thử nghiệm đơn vị thực hiện giới thiệu dự phòng, có nghĩa là khi các yêu cầu thay đổi, mã thực hiện chúng và các thử nghiệm bao gồm cả mã này phải được thay đổi. Chi phí này tất nhiên là không đổi, vì vậy người ta có thể tranh luận, rằng nó không thực sự quan trọng. Trên thực tế, trong các ngôn ngữ như Ruby, nó thực sự không so sánh với lợi ích, nhưng được đưa ra cách lập trình chức năng gõ tĩnh bao gồm rất nhiều bài kiểm tra đơn vị mặt đất được dự định, có vẻ như đó là một chi phí liên tục có thể giảm mà không bị phạt.
Từ đó tôi suy ra rằng các bài kiểm tra đơn vị có phần lỗi thời trong phong cách lập trình này. Tất nhiên, một tuyên bố như vậy chỉ có thể dẫn đến các cuộc chiến tôn giáo, vì vậy hãy để tôi giải thích vấn đề này đơn giản:
Khi bạn sử dụng một kiểu lập trình như vậy, bạn sẽ sử dụng các bài kiểm tra đơn vị ở mức độ nào và tại sao (bạn hy vọng đạt được chất lượng nào cho mã của mình)? Hoặc ngược lại: bạn có tiêu chí nào để bạn có thể đủ điều kiện cho một đơn vị mã chức năng được nhập tĩnh như được phân tích bởi bộ phân tích tĩnh và do đó không cần bảo hiểm kiểm tra đơn vị không?