Tổng quan
Định luật Murphy nhắc rằng nếu có cách để điều gì đó hỏng, hãy giả định nó sẽ hỏng. Trong phần mềm, edge case, input kỳ quặc, resource cạn và failure bất ngờ không phải ngoại lệ hiếm như ta tưởng.
Ý chính
- Code defensively: validate input, xử lý lỗi, timeout, backup và fallback rõ ràng.
- Production sẽ gặp tổ hợp điều kiện mà môi trường dev không tái hiện đầy đủ.
- Test nên bao gồm edge case và failure path, không chỉ happy path.
Ví dụ từ nguồn
Form nhập text sẽ có người gửi chuỗi 10.000 ký tự hoặc ký tự lạ nếu bạn không giới hạn và sanitize.
Memory, disk hoặc connection pool thường cạn đúng lúc traffic tăng hoặc job chạy chồng nhau.
Nguồn gốc
Luật thường được gắn với Edward A. Murphy Jr., kỹ sư trong các thử nghiệm rocket sled năm 1949, rồi lan rộng sang hàng không, kỹ thuật và phần mềm.
Lưu ý khi áp dụng
Dùng Murphy để chuẩn bị failure mode cụ thể, không phải để bi quan chung chung. Mỗi rủi ro nên có guardrail hoặc acceptance rõ.