Ich hatte kürzlich ein Vorstellungsgespräch, in dem sie mir eine Stunde Zeit gaben, um richtigen Code zu schreiben. Es war keine große Menge, wahrscheinlich weniger als 100 Zeilen. Nach ungefähr 45 Minuten kompilierte ich, ließ es laufen und brachte es zum Laufen. Ich habe vielleicht 5-10 Minuten damit verbracht, Kompilierungsfehler und ein paar kleinere Fehler zu beheben, aber insgesamt war es sehr reibungslos. (Ich habe übrigens ein Angebot von ihnen bekommen.)
Was mich jedoch verwunderte, war, dass der Interviewer mir sagte, nachdem ich den vollständigen Code übergeben hatte, dass das einzige, was ich falsch gemacht habe, "nicht kompilieren, während ich mitmache". Ich fragte ihn, was der Unterschied sei, und er sagte: "Was hätten Sie getan, wenn Sie den Code fertiggestellt hätten und er nicht rechtzeitig kompiliert worden wäre?"
Meines Erachtens ist dies ein ungültiges Argument, da das "Kompilieren von Code" für eine bestimmte Codelänge im Allgemeinen das Beheben einer konstanten Anzahl von Kompilierungsfehlern und eine relativ konstante Zeit in Anspruch nimmt Schreibe den Code fertig oder verschränke ihn mit deiner Codierungszeit. Wenn Sie die Codierung unterbrechen, um nach fehlenden Semikolons zu suchen, wirkt sich dies möglicherweise nachteilig auf Ihre Effizienz aus. Außer unter extremen Umständen, wenn ich mit Unklarheiten in Bezug auf Randfälle experimentiere, etwa bei virtuellen Funktionen in abgeleiteten Klassen usw., ist zu erwarten, dass von einem erfahrenen Entwickler geschriebener Code kompiliert wird, abzüglich gelegentlicher Tippfehler und sogar wenn nicht, dann '
Bei einem ähnlichen Vorfall erhielt ich in einem Interview eine unvollständige Codebasis und wurde gebeten, diese zu beenden und die erforderlichen Änderungen vorzunehmen, um sie zum Laufen zu bringen. Ich begann damit, den vorhandenen Code zu lesen, und nach ein paar Minuten (noch bevor ich den Code durchgesehen hatte) sagte mir der Interviewer, das sei genug. Als ich ihn fragte, was er getan hätte (dh "was habe ich falsch gemacht"), sagte er mir, dass er damit begonnen hätte, den Code sofort zum Kompilieren zu bringen.
Warum ist das überhaupt relevant? Meiner Meinung nach und nach hat die Tatsache, ob ein Teil des Codes im Wesentlichen zufällig kompiliert wird oder nicht, wenig mit der Korrektheit des zugrunde liegenden Programms zu tun. (Für mich bedeutet das Fokussieren auf das Kompilieren, einen Artikel einer Rechtschreibprüfung zu unterziehen, ohne die Grammatik zu überprüfen.)
Wenn Sie mir einen unvollständigen Code geben, werde ich ihn zuerst lesen. Ich werde nicht einmal versuchen, es zu kompilieren, bis ich weiß, was der Code tut und der Algorithmus korrekt ist.
Wie dem auch sei, es waren nur ein paar Zwischenfälle in der letzten Zeit, aber im Allgemeinen habe ich viele Entwickler darüber sprechen hören, wie sie ihren Code im Laufe der Zeit kompilieren, und dennoch konnte mir niemand sagen, welchen Nutzen dies hat. Ich verstehe die Vorteile des Testens Ihres Codes, aber warum kompilieren?
Meine Frage lautet also: Gibt es etwas, das ich verpasst habe? Hat das Kompilieren tatsächlich einen Vorteil für Sie? Oder ist dies eine Art Mythos, der von der Software-Community verbreitet wird und den Sie häufig kompilieren müssen?