Gần đây tôi đã có một cuộc phỏng vấn việc làm trong đó họ đã cho tôi một giờ để viết một số mã thực sự. Đó không phải là một số tiền lớn, có thể ít hơn 100 dòng. Sau khoảng 45 phút, tôi biên dịch, chạy nó và làm cho nó hoạt động. Tôi có thể đã dành 5-10 phút để xử lý các lỗi biên dịch và một vài lỗi nhỏ, nhưng nhìn chung nó rất trơn tru. (Ngẫu nhiên, tôi đã nhận được một lời đề nghị từ họ.)
Tuy nhiên, điều khiến tôi bối rối là sau khi tôi trao mã hoàn thành, người phỏng vấn nói với tôi rằng điều duy nhất tôi làm sai là "không biên dịch khi tôi đi cùng". Tôi hỏi anh ta sự khác biệt là gì và anh ta nói "anh sẽ làm gì nếu hoàn thành mã và nó không được biên dịch kịp thời".
Theo cách hiểu của tôi, đó là một đối số không hợp lệ, bởi vì "lấy mã để biên dịch" trong một độ dài mã nhất định thường liên quan đến việc sửa một số lỗi biên dịch không đổi và mất một khoảng thời gian khá ổn định, điều này sẽ giống nhau cho dù bạn có làm điều đó sau khi viết xong mã hoặc nếu bạn xen kẽ nó với thời gian mã hóa của bạn. Nếu bất cứ điều gì, làm gián đoạn mã hóa của bạn để tìm kiếm dấu chấm phẩy bị thiếu có lẽ sẽ gây bất lợi cho hiệu quả của bạn. Ngoại trừ trong những trường hợp cực đoan khi tôi đang thử nghiệm những điều tối nghĩa xung quanh các trường hợp cạnh trên những thứ như các hàm ảo trong các lớp dẫn xuất, v.v ... có vẻ hợp lý khi hy vọng rằng mã được viết bởi một nhà phát triển có kinh nghiệm sẽ biên dịch, trừ lỗi đánh máy không thường xuyên và thậm chí nếu không, nó '
Trong một sự cố tương tự khác, tôi đã nhận được một cơ sở mã không hoàn chỉnh trong một cuộc phỏng vấn, và được yêu cầu hoàn thành nó và thực hiện các sửa đổi cần thiết để chạy nó. Tôi bắt đầu bằng cách đọc qua mã hiện có, và sau vài phút (ngay cả trước khi tôi xem xong mã), người phỏng vấn nói với tôi rằng thế là đủ. Khi tôi hỏi anh ta sẽ làm gì (nghĩa là "tôi đã làm gì sai"), anh ta nói với tôi rằng anh ta sẽ bắt đầu bằng cách ngay lập tức lấy mã để biên dịch.
Tại sao điều đó thậm chí có liên quan? Theo ý kiến của tôi và theo kinh nghiệm của tôi, việc một đoạn mã biên dịch hay không về cơ bản là ngẫu nhiên, liên quan đến những thứ như có hay không dấu chấm phẩy bị thiếu, và ít liên quan đến tính chính xác của chương trình bên dưới. (Đối với tôi, tập trung vào biên dịch giống như chạy một bài viết thông qua kiểm tra chính tả mà không cần đọc lại để kiểm tra ngữ pháp.)
Nếu bạn đưa cho tôi một đoạn mã chưa hoàn chỉnh, điều đầu tiên tôi làm sẽ là đọc nó. Tôi thậm chí sẽ không biên dịch nó cho đến khi tôi biết mã đang làm gì và tôi biết thuật toán này là chính xác.
Dù sao, đây chỉ là một vài sự cố gần đây, nhưng nói chung tôi đã nghe nhiều nhà phát triển nói về việc biên dịch mã của họ khi họ đi cùng, nhưng chưa ai có thể cho tôi biết lợi ích của việc đó. Tôi hiểu lợi ích của việc kiểm tra mã của bạn khi bạn thực hiện, nhưng tại sao lại biên dịch?
Vì vậy, câu hỏi của tôi là: Có điều gì tôi đã bỏ lỡ? Có thực sự có một lợi ích để biên dịch khi bạn đi cùng? Hay đây là một loại huyền thoại được truyền bá bởi cộng đồng phần mềm mà bạn phải biên dịch mã của mình thường xuyên?