[Tuyên bố miễn trừ trách nhiệm: câu hỏi này mang tính chủ quan, nhưng tôi muốn nhận được câu trả lời được hỗ trợ bởi các sự kiện và / hoặc phản xạ]
Tôi nghĩ mọi người đều biết về Nguyên tắc Mạnh mẽ , thường được tóm tắt bởi Luật Postel:
Hãy thận trọng trong những gì bạn gửi; Hãy tự do trong những gì bạn chấp nhận.
Tôi đồng ý rằng đối với việc thiết kế giao thức truyền thông rộng rãi, điều này có thể có ý nghĩa (với mục tiêu cho phép mở rộng dễ dàng), tuy nhiên tôi luôn nghĩ rằng ứng dụng của nó đối với HTML / CSS là một sự thất bại hoàn toàn, mỗi trình duyệt thực hiện một chỉnh sửa im lặng của riêng mình phát hiện / hành vi, khiến gần như không thể có được kết xuất nhất quán trên nhiều trình duyệt.
Mặc dù vậy, tôi lưu ý rằng RFC của giao thức TCP có thể chấp nhận "Thất bại thầm lặng" trừ khi có quy định khác ... đó là một hành vi thú vị, để nói rằng ít nhất.
Có những ví dụ khác về việc áp dụng nguyên tắc này trong suốt giao dịch phần mềm thường xuyên bật lên vì họ đã cắn các nhà phát triển, từ đầu tôi ra khỏi đầu:
- Javascript chèn dấu hai chấm
- Chuyển đổi dựng sẵn C (im lặng) (sẽ không quá tệ nếu nó không bị cắt cụt ...)
và có các công cụ để giúp thực hiện hành vi "thông minh":
- tên phù hợp với thuật toán ngữ âm ( Double Metaphone )
- thuật toán khoảng cách chuỗi ( khoảng cách Levenshtein )
Tuy nhiên, tôi thấy rằng cách tiếp cận này, mặc dù có thể hữu ích khi giao dịch với người dùng không có kỹ thuật hoặc để giúp người dùng trong quá trình khôi phục lỗi, có một số nhược điểm khi áp dụng cho thiết kế giao diện thư viện / lớp:
- nó hơi chủ quan cho dù thuật toán đoán "đúng", và do đó nó có thể đi ngược lại Nguyên lý tối thiểu
- nó làm cho việc triển khai trở nên khó khăn hơn, do đó có nhiều cơ hội hơn để giới thiệu các lỗi (vi phạm YAGNI ?)
- nó làm cho hành vi dễ bị thay đổi hơn, vì bất kỳ sửa đổi nào của thói quen "đoán" có thể phá vỡ các chương trình cũ, gần như loại trừ khả năng tái cấu trúc ... ngay từ đầu!
Và đây là những gì dẫn tôi đến câu hỏi sau đây:
Khi thiết kế một giao diện (thư viện, lớp, tin nhắn), bạn có nghiêng về nguyên tắc mạnh mẽ hay không?
Bản thân tôi có xu hướng khá nghiêm ngặt, sử dụng xác nhận đầu vào rộng rãi trên các giao diện của mình và tôi tự hỏi liệu có lẽ tôi quá nghiêm ngặt.