我最近接受了一次面试,他们给了我一个小时的时间来编写一些真实的代码。这不是一个很大的数目,可能少于100行。大约45分钟后,我进行了编译,运行并开始运行。我可能花了5到10分钟的时间来解决编译错误和一些小错误,但总体来说还是很顺利的。(顺便说一句,我确实从他们那里得到了报价。)
但是,令我感到困惑的是,在我交出完整的代码后,面试官告诉我,我做错的唯一一件事就是“在进行过程中没有进行编译”。我问他有什么区别,他说:“如果您完成了代码并且没有及时编译,您将怎么做”。
以我的理解,这是一个无效的参数,因为对于给定长度的代码,“获取代码进行编译”通常涉及固定数目的编译错误,并且花费的时间也相当恒定,无论之后是否这样做,这应该是相同的完成编写代码,或者如果您将其与编码时间交织在一起。如果有的话,中断您的编码以搜索丢失的分号可能会损害您的效率。除非在极端情况下,当我尝试对派生类中的虚函数等事物的边缘情况进行模糊处理时,可以合理地预期由有经验的开发人员编写的代码将进行编译,减去偶然的输入错误,甚至如果没有,那就是
在另一起类似的事件中,在一次采访中给我一个不完整的代码库,要求我完成它并进行必要的修改以使其运行。我从阅读现有代码开始,然后过了几分钟(甚至在我看完代码之前),面试官告诉我就足够了。当我问他会做些什么(即“我做错了什么”)时,他告诉我他本来会立即获取代码进行编译。
为什么这甚至有意义?以我的观点和经验来看,一段代码的编译本质上是随机的,涉及诸如分号是否丢失之类的事情,并且与底层程序的正确性无关。(对我来说,专注于编译就像通过拼写检查来运行文章,而无需进行校对来检查语法。)
如果您给我一段不完整的代码,我要做的第一件事就是阅读它。在我不知道代码在做什么并且算法正确之前,我什至不会尝试编译它。
无论如何,这些只是最近发生的几起事件,但总的来说,我听说许多开发人员都在谈论他们在进行代码编译的过程,但是没人能告诉我这样做的好处。我了解在进行代码测试的好处,但是为什么要编译?
所以我的问题是:我错过了什么吗?进行编译实际上有好处吗?还是由软件社区传播的某种神话,您必须经常编译代码?