当您不熟悉语言时,如何评估代码质量?[关闭]


10

作为一个假设,如果我在.NET中工作时要面试某人以担任新的PHP开发人员职位,那么我如何确定他们提供给我的代码示例是否高效且质量良好?

换句话说,如果您不熟悉该语言,评估程序员代码的最佳方法是什么?


1
我不愿意向您透露这句话,但您却不:-)在面试中邀请确实知道该语言或自己学习该语言的人。
2012年

2
这就是为什么面试是团队合作的原因。您评估自己能够评估的内容,然后将这类内容交给一些熟悉它的技术团队负责人。
卡兹(Kaz)2012年

对我而言,最好的度量标准是函数的大小(此处包括嵌套深度),其后是类/文件的大小。
m3th0dman

Answers:


20

我如何确定他们提供给我的代码示例是否高效且质量良好?

您将无法评估的内容是语言习语的正确使用和库的使用。因此,这些不是您应该尝试看的东西。

您可以评估的是:

  • 代码的结构如何
  • 命名良好的变量(您能理解事情)
  • 结构良好的功能/代码单元
  • 代码库中的一致性

以上几点(尽管不是很详尽)将指示代码是否闻起来,并且应该是经验丰富的程序员可以识别出的好坏。

简而言之-寻找无论语言如何都应表明良好代码的事物。


5
另一个重要的问题是:“这些评论是否清晰,有意义且易于理解?” 即使您很少接触该语言,您能否从注释中学到一些代码的作用?
FrustratedWithFormsDesigner 2012年

2
@FrustratedWithFormsDesigner-评论?那些是什么?认真地讲,代码应该是自我注释的。注释只能用于解释代码错误的原因或原因。
Oded

6
我要格外小心:最终很容易根据谁最喜欢您编写代码来选择代码,这可能是该语言的相对较差的使用。
杰里·科芬

@FrustratedWithFormsDesigner俄德可能认为你应该阅读这elegantcode.com/2010/04/18/...
乔尔

4

让他们作为流程图,或作为面试的一部分带您完成。您有一个完美的借口,可以告诉他们他们如何看待自己的解释。

如果他们要跳到您喜欢的语言,您会知道有很多辅导员要来,因此无论如何,您都应该寻找良好的逻辑/推理能力。

如果他们要继续使用他们喜欢的语言工作,那么您将不得不接受他们会在某种程度上自行管理更精细的语言特定细节,直到其他人都加快了速度,因此您将需要进行互动还有设计方面。


1
如果应聘者可以解释其代码,以便清楚地理解其背后的意图和目的,并且在外观上看起来组织和总体结构是合理的,则他们可能会对代码所代表的内容有一个合理的了解。并且可能会重复类似的干净复制。即使对特定部分的解释很少,因为“因为这就是特定参考材料显示的操作方式”,所以在命名参考材料时,您至少具有适度的表达能力,不仅可以“编码”而且可以找到并将解决方案应用于他们通常不会遇到的问题。
JustinC

1

除了骨头式的/显然是错误的代码,高效性在很大程度上取决于所讨论语言的编译器/解释器,而您实际上将无法从代码示例中了解到这一点。一个代码示例可以像优美的中国瓷器一样精美而优雅地编写,但是如果编译/解释得不好,运行速度会很慢。

如果没有一些熟悉,您将无法评估语言功能/语法糖/约定的惯用用法。

您应该能够基于通用性(例如整洁度,控制流,变量命名,操作顺序等)来判断它是否编写得一般。

但是,实际上,如果您知道该语言将要使用的语言,则可以尝试找到该语言的一个或多个样式指南,进入书店并翻阅几本关于该语言的书籍,略读代码示例,以使用您选择的语言查找与您熟悉的事物类似的事物,查看使用该语言的一个或多个开源项目,依此类推。

如果您有时间并且没有成本障碍,那么您甚至可以为该语言设置开发环境,开发出Hello World应用程序,编写代码,或者编写一个简单的小应用程序在里面。您将很快建立起一个基本的参考框架,这不仅可以使您有能力进行有关代码审查的特定目的,而且您可能会受语言的束缚并有所扩展。


1

不论语言:

  • 是否存在明确的关注点分离,类的适当使用(针对OO语言),或是否有任何故意企图将代码分解为可重用的模块化“块”的迹象?
  • 同样,是否有任何测试证据-单元测试或其他?
  • 如果是生产代码,是否散布了调试字符串,可能表明开发和部署之间几乎没有分隔?
  • 代码是否遵循任何种类的命名约定(您是否喜欢该约定无关紧要!)?
  • 如果您拥有文件而不是打印输出,文件中的每个函数/类是否都与关联(因此,如果它是一个名为data_access_layer的文件,则处理图像的函数的证据可能就不合适了)。
  • 对用户输入不信任的任何迹象也很好,特别是对于基于Web的语言(例如PHP)。因此,诸如input = escape(input)之类的结构至少表明您已意识到问题所在。
  • 注释或自描述代码始终是好的。关于应发表评论的数量,有几种观点,但完全没有评论
  • 出于愤世嫉俗的代价,我还会在面试之前搜索一些代码。不幸的是,它很容易成为复制和粘贴工作。

并不是说任何没有这些功能的代码都会自动变差,但是我认为这些是对自己的思想进行了反思和考虑的人的指示。

但是,对于所有这些指标,您应该询问这样的代码的基本原理是什么。可能有一个特定的语言选择理由……然后,当他们和其他候选人离职时,google是您的朋友,因为您可以检查他们的话听起来是否合理……!

祝您好运,因为雇用好人是您组织中最重要的角色之一;)


事后看来,这与@Oded(和评论)所说的内容很相似。
frackham

0

您应该请知道该语言的人来面试或查看样本。这样的人很可能会发现坏点。

候选人要在团队中工作吗?让团队成员见他并询问有关他的技能的问题。


-2

向他们询问使用该语言时遇到的限制。要求他们向您展示一个简单的SQL查询。任何值得关注的Php开发人员都应该能够花很多时间来完成基本的选择/更新/删除查询。

道格

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.