Minh họa cho Định luật Kernighan
Law #32 Chất lượng

Định luật Kernighan

Kernighan's Law

Code càng khôn lỏi và khó hiểu, việc debug nó sau này càng tốn sức gấp nhiều lần.

Nguồn tham khảo: Laws of Software Engineering

Tổng quan

Kernighan nhắc rằng debug khó gấp đôi viết code. Nếu bạn viết code ở ngưỡng thông minh tối đa của mình, bạn sẽ không đủ khả năng debug nó khi sự cố xảy ra.

Ý chính

  • Code thông minh quá mức thường chuyển chi phí sang tương lai khi cần hiểu vì sao nó sai.
  • Debug cần hiểu cả ý định lẫn hành vi thực tế của code, nên phức tạp hơn viết happy path.
  • Đơn giản, đặt tên rõ và test tốt là đầu tư trực tiếp vào khả năng sửa lỗi.

Ví dụ từ nguồn

Một hàm chain nhiều operation trong một dòng có thể nhìn ấn tượng nhưng khó đặt breakpoint và khó biết bước nào sai.

Một thuật toán clever không có test case giải thích invariant sẽ làm người sau ngại sửa dù bug đã rõ.

Nguồn gốc

Brian Kernighan diễn đạt ý này trong The Elements of Programming Style cùng P.J. Plauger, và nó trở thành lời nhắc kinh điển về tính dễ debug.

Lưu ý khi áp dụng

Hãy viết code cho người sẽ debug lúc 2 giờ sáng, không phải cho phiên bản sắc bén nhất của bạn trong lúc đang viết.

← Quay lại danh sách 56 luật