Nói một cách đơn giản: sự phân tách kém các mối quan tâm trong mã, dẫn đến mã không theo mô-đun, dẫn đến việc sử dụng lại kém, dẫn đến mã trùng lặp.
Nếu bạn không bao giờ thử lặp lại chức năng, bạn sẽ không nhận được mã trùng lặp và nhiều biến thể hiện, sẽ không thành vấn đề.
Nếu bạn cố gắng lặp lại chức năng, thì mã nguyên khối, không phải là mô-đun, không thể được sử dụng lại. Nó làm quá nhiều và chỉ có thể làm những gì nó làm. Để làm một cái gì đó tương tự, nhưng không giống nhau, việc cắt và dán "dễ dàng" hơn là phá vỡ mã nguyên khối. Các lập trình viên kinh nghiệm biết rằng mã trùng lặp là con đường dẫn đến địa ngục.
Vì vậy, trong khi nhiều biến thể tự nó không phải là nguyên nhân gốc rễ của vấn đề thì đó là một "mùi" mạnh mà vấn đề đang đến.
Ngôn ngữ "không thể lùi xa" yếu hơn nói "chắc chắn phải tuân theo" vì vậy tác giả không cho rằng nó phải xảy ra nhưng cuối cùng sẽ xảy ra; nếu bạn cần sử dụng lại chức năng nhưng không thể vì mã không phải là mô-đun.
n
ví dụ các biến boolean tạo một không gian trạng thái bên trong của2^n
. Thường xuyên hơn không phải mặc dù đối tượng của bạn không có nhiều trạng thái có thể quan sát được , nhưng vì bạn đã nhồi nhét tất cả trạng thái đó vào một đối tượng, nên trong nội bộ, bạn vẫn phải xử lý tất cả.