Trong cuốn sách Lập trình viên thực dụng , các nhà văn đề cập đến lập trình theo khái niệm trùng hợp . Nó giải thích nó là gì, tại sao nó được gây ra, những nguy hiểm bạn có thể gặp phải là gì và nó so sánh với một bãi mìn trong một cuộc chiến.
Bạn có bao giờ xem những bộ phim chiến tranh đen trắng cũ không? Người lính mệt mỏi tiến lên một cách thận trọng ra khỏi bàn chải. Có một giải phóng mặt bằng phía trước: có bất kỳ mỏ đất, hoặc nó có an toàn để vượt qua? Không có bất kỳ dấu hiệu nào cho thấy đó là một bãi mìn không có dấu hiệu, dây thép gai hoặc miệng hố. Người lính chọc đất trước mặt anh ta bằng lưỡi lê và nhăn mặt, mong chờ một vụ nổ. Không có cái nào cả. Vì vậy, anh ta tiến hành một cách siêng năng qua cánh đồng một lúc, chọc và chọc khi anh ta đi. Cuối cùng, tin rằng lĩnh vực này là an toàn, anh ta đứng thẳng và diễu hành về phía trước, chỉ để được thổi thành từng mảnh.
Các thăm dò ban đầu của người lính cho các mỏ không tiết lộ gì, nhưng đây chỉ là may mắn. Anh ta bị dẫn đến một kết luận sai lầm với kết quả thảm hại.
Là nhà phát triển, chúng tôi cũng làm việc trong các bãi mìn. Có hàng trăm cái bẫy chỉ chờ để bắt chúng ta mỗi ngày. Ghi nhớ câu chuyện của người lính, chúng ta nên cảnh giác khi đưa ra kết luận sai. Chúng ta nên tránh lập trình bởi sự trùng hợp ngẫu nhiên, dựa vào may mắn và những thành công tình cờ, có lợi cho việc lập trình một cách có chủ ý ...
Nhưng tôi không thực sự hài lòng về cách họ mô tả vấn đề "làm thế nào để vượt qua nó". Vâng, bạn phải suy nghĩ trước khi viết mã, nhưng làm thế nào để thực hành điều đó? Điều duy nhất tôi có thể nghĩ là bằng cách thêm các tính năng cho các dự án nguồn mở hiện tại, nơi bạn phải có kiến thức về cả "những gì tôi đang làm hiện tại" và "Các đoạn mã khác đang hoạt động như thế nào" và nó không áp dụng được khi bạn đang viết dự án của riêng bạn.
CHỈNH SỬA:
một bản tóm tắt từ bài viết của bạn:
- Đừng đoán động thái tiếp theo của bạn, hãy chứng minh là đúng
- Kiểm tra đơn vị và tái cấu trúc càng nhiều càng tốt, khi cần thiết
- Thêm tính năng kiểm tra biên dịch trên mạng thường xuyên
- Nếu bạn không thể giải thích mã cho một người mới, có lẽ bạn đang lập trình theo sự trùng hợp.
BTW, thật khó để chấp nhận một câu trả lời, nó thực sự khó. Tất cả các câu trả lời là thực sự tuyệt vời :)