Có lẽ hỏi nếu khả thi và hợp lý không phải là câu hỏi hữu ích nhất để hỏi. Có lẽ câu trả lời thiết thực nhất là câu trả lời được chấp nhận. Tôi sẽ phân tích điều này ở cấp độ triết học hơn.
Bảo hiểm 100% sẽ là lý tưởng, nhưng lý tưởng, nó sẽ không cần thiết, hoặc sẽ dễ dàng hơn để đạt được. Tôi thích nghĩ về việc đó là tự nhiên và con người hơn là khả thi hay hợp lý.
Hành động lập trình chính xác là không thể với các công cụ ngày nay. Rất khó để viết mã hoàn toàn chính xác và không có lỗi. Nó chỉ là không tự nhiên. Vì vậy, không có tùy chọn rõ ràng nào khác, chúng tôi chuyển sang các kỹ thuật như TDD và bảo hiểm mã theo dõi. Nhưng miễn là kết quả cuối cùng vẫn là một quá trình không tự nhiên, bạn sẽ có một thời gian khó khăn để mọi người thực hiện nó một cách nhất quán và hạnh phúc.
Đạt được bảo hiểm mã 100% là một hành động không tự nhiên. Đối với hầu hết mọi người, buộc họ phải đạt được nó sẽ là một hình thức tra tấn.
Chúng ta cần các quy trình, công cụ, ngôn ngữ và mã ánh xạ tới các mô hình tinh thần tự nhiên của chúng ta. Nếu chúng tôi không làm điều này, không có cách nào để kiểm tra chất lượng thành sản phẩm.
Chỉ cần nhìn vào tất cả các phần mềm hiện nay. Hầu hết nó gây rối khá thường xuyên. Chúng tôi không muốn tin điều này. Chúng tôi muốn tin rằng công nghệ của chúng tôi là huyền diệu và làm cho chúng tôi hạnh phúc. Và vì vậy, chúng tôi chọn bỏ qua, xin lỗi và quên hầu hết các lần công nghệ của chúng tôi gây rối. Nhưng nếu chúng ta đánh giá trung thực mọi thứ, hầu hết các phần mềm hiện nay là khá nhảm nhí.
Dưới đây là một vài nỗ lực để làm cho mã hóa tự nhiên hơn:
https://github.com/jcoplien/trygve
https://github.com/still-dreaming-1/PurposefulPhp
Sau này là vô cùng không đầy đủ và thử nghiệm. Thực tế đó là một dự án tôi đã bắt đầu, nhưng tôi tin rằng nó sẽ là một bước tiến lớn cho nghề lập trình nếu tôi có thể tự mình dành thời gian cho nó để hoàn thành nó. Về cơ bản, ý tưởng là nếu các hợp đồng thể hiện các khía cạnh duy nhất của hành vi lớp mà chúng ta quan tâm và chúng ta đã thể hiện hợp đồng dưới dạng mã, tại sao không chỉ có định nghĩa lớp và phương thức cùng với hợp đồng. Theo cách đó, các hợp đồng sẽ là mã và chúng tôi không cần phải thực hiện tất cả các phương thức. Hãy để thư viện tìm ra cách tôn vinh các hợp đồng cho chúng tôi.