ฉันเพิ่งได้สัมภาษณ์งานซึ่งพวกเขาให้เวลาฉันหนึ่งชั่วโมงในการเขียนรหัสจริง มันไม่ได้เป็นจำนวนมากอาจน้อยกว่า 100 บรรทัด หลังจากนั้นประมาณ 45 นาทีฉันก็รวบรวมวิ่งแล้วก็ไปทำงาน ฉันอาจใช้เวลา 5-10 นาทีในการรวบรวมข้อผิดพลาดและข้อผิดพลาดเล็กน้อย แต่โดยรวมแล้วมันราบรื่นมาก (บังเอิญฉันได้รับข้อเสนอจากพวกเขา)
อย่างไรก็ตามสิ่งที่ทำให้ฉันงงคือหลังจากที่ฉันส่งรหัสที่สมบูรณ์แล้วผู้สัมภาษณ์บอกฉันว่าสิ่งเดียวที่ฉันทำผิดคือ "ไม่ได้รวบรวมเมื่อฉันไป" ฉันถามเขาว่าอะไรคือความแตกต่างและเขาพูดว่า "คุณจะทำอย่างไรถ้าคุณทำโค้ดเสร็จและมันไม่ได้คอมไพล์ในเวลา"
ในความเข้าใจของฉันนั่นเป็นอาร์กิวเมนต์ที่ไม่ถูกต้องเนื่องจาก "การรับโค้ดเพื่อรวบรวม" สำหรับความยาวของรหัสที่กำหนดมักเกี่ยวข้องกับการแก้ไขข้อผิดพลาดในการรวบรวมจำนวนคงที่และใช้เวลาค่อนข้างคงที่ซึ่งควรจะเหมือนกันไม่ว่าคุณจะทำตาม เสร็จสิ้นการเขียนรหัสหรือถ้าคุณ interleave กับรหัสเวลาของคุณ หากมีสิ่งใดขัดจังหวะการเข้ารหัสของคุณเพื่อค้นหาอัฒภาคที่ขาดหายไปอาจเป็นอันตรายต่อประสิทธิภาพของคุณ ยกเว้นในสถานการณ์ที่รุนแรงเมื่อฉันทดลองกับสิ่งคลุมเครือรอบ ๆ ขอบบนสิ่งต่างๆเช่นฟังก์ชั่นเสมือนในคลาสที่ได้รับ ฯลฯ ดูเหมือนว่าสมเหตุสมผลที่จะคาดหวังว่าโค้ดที่เขียนโดยนักพัฒนาที่มีประสบการณ์จะคอมไพล์ลบข้อผิดพลาดการพิมพ์เป็นครั้งคราว หากไม่เป็นเช่นนั้น
ในเหตุการณ์ที่คล้ายคลึงกันอีกครั้งฉันได้รับ codebase ที่ไม่สมบูรณ์ในการสัมภาษณ์และขอให้เสร็จและทำการแก้ไขที่จำเป็นเพื่อให้มันทำงานได้ ฉันเริ่มจากการอ่านรหัสที่มีอยู่แล้วหลังจากนั้นไม่กี่นาที (ก่อนที่ฉันจะดูรหัสเสร็จ) ผู้สัมภาษณ์บอกฉันว่าเพียงพอแล้ว เมื่อฉันถามเขาว่าเขาจะทำอะไร (เช่น "ฉันทำผิดอะไร") เขาบอกฉันว่าเขาจะเริ่มต้นทันทีโดยรับรหัสเพื่อรวบรวม
ทำไมถึงเกี่ยวข้องกัน? จากความเห็นของฉันและจากประสบการณ์ของฉันการคอมไพล์โค้ดบางส่วนนั้นเป็นการสุ่มหรือไม่เกี่ยวข้องกับสิ่งต่าง ๆ เช่นว่าเซมิโคลอนหายไปหรือไม่และเกี่ยวข้องกับความถูกต้องของโปรแกรมพื้นฐานเล็กน้อย (สำหรับฉันการเน้นไปที่การคอมไพล์ก็เหมือนกับการรันบทความผ่านการตรวจการสะกดคำโดยไม่ต้องพิสูจน์อักษรเพื่อตรวจสอบไวยากรณ์)
หากคุณให้รหัสที่ไม่สมบูรณ์แก่ฉันสิ่งแรกที่ฉันจะทำคืออ่านมัน ฉันจะไม่พยายามรวบรวมจนกว่าฉันจะรู้ว่าโค้ดทำอะไรและฉันรู้ว่าอัลกอริทึมนั้นถูกต้อง
อย่างไรก็ตามสิ่งเหล่านี้เป็นเหตุการณ์ที่เกิดขึ้นเมื่อไม่นานมานี้ แต่โดยทั่วไปฉันเคยได้ยินนักพัฒนาหลายคนพูดถึงการคอมไพล์โค้ดของพวกเขาขณะที่พวกเขาไปด้วยกัน แต่ก็ไม่มีใครสามารถบอกฉันถึงประโยชน์ของการทำเช่นนั้น ฉันเข้าใจถึงประโยชน์ของการทดสอบโค้ดของคุณเมื่อคุณดำเนินการ แต่ทำไมต้องรวบรวม
ดังนั้นคำถามของฉันคือ: มีสิ่งที่ฉันพลาดหรือไม่? มีประโยชน์จริงๆหรือไม่ในการรวบรวมเมื่อคุณไปด้วย? หรือนี่เป็นตำนานที่แพร่กระจายโดยชุมชนซอฟต์แวร์ที่คุณต้องรวบรวมรหัสของคุณบ่อยๆหรือไม่?