Нещодавно у мене було співбесіду на роботі, в якій вони дали мені годину, щоб написати якийсь реальний код. Це була не величезна кількість, мабуть, менше 100 рядків. Приблизно через 45 хвилин я склав, запустив його і почав працювати. Можливо, я витратив 5-10 хвилин на розробку помилок компіляції та пару незначних помилок, але в цілому це було дуже гладко. (До речі, я отримав від них пропозицію.)
Однак мене здивувало те, що після того, як я передав заповнений код, інтерв'юер сказав мені, що єдине, що я зробив неправильно, - це "не складання, коли я йду далі". Я запитав його, в чому різниця, і він сказав "що б ти зробив, якби закінчив код, і він не склався вчасно".
На моє розуміння, це недійсний аргумент, оскільки "отримання коду для компіляції" за задану довжину коду, як правило, передбачає виправлення постійної кількості помилок компіляції і займає досить постійну кількість часу, що має бути однаковим, чи будете ви це робити після вас закінчіть написання коду, або якщо ви переплутаєте його зі своїм часом кодування. Якщо що-небудь, переривання кодування на пошук пропущених крапок може бути згубним для вашої ефективності. За винятком екстремальних обставин, коли я експериментую із неясними цінностями навколо реальних випадків на таких речах, як віртуальні функції у похідних класах тощо., Здається, розумно очікувати, що код, написаний досвідченим розробником, скомпілюватиме за вирахуванням випадкової помилки введення тексту і навіть якщо цього немає, це "
В іншому подібному випадку мені в інтерв'ю дали неповну базу коду, і я попросив закінчити її та внести необхідні модифікації, щоб запустити її. Я почав з читання існуючого коду, а потім через кілька хвилин (ще до того, як я закінчив роздивлятися код), інтерв'юер сказав мені, що цього достатньо. Коли я запитав у нього, що б він зробив (тобто "що я зробив не так"), він сказав мені, що він би почав з негайного отримання коду для складання.
Чому це навіть актуально? На мою думку та з мого досвіду, незалежно від того, чи компіляція фрагмента коду є по суті випадковою, включаючи такі речі, як відсутні крапки з комою чи ні, і мало стосується правильності основної програми. (Для мене, зосередження уваги на складанні - це як запуск статті через перевірку правопису без коректури, щоб перевірити граматику.)
Якщо ви дасте мені частину неповного коду, перше, що я роблю, - це прочитати його. Я навіть не намагатимусь скомпілювати його, поки не дізнаюся, що робить код, і я не знаю, що алгоритм правильний.
У будь-якому випадку, це були лише кілька останніх випадків, але в цілому я чув, як багато розробників говорять про складання свого коду, коли вони йдуть разом, і все ж ніхто не зміг сказати мені на користь цього. Я розумію переваги тестування вашого коду під час роботи, але навіщо компілювати?
Тож моє запитання таке: чи щось я пропустив? Чи є насправді користь для складання, коли ви йдете далі? Або це якийсь міф, котрий поширюється програмним співтовариством, що ви повинні часто збирати свій код?