良好的编码风格对于决定雇用程序员的重要性有多大?[关闭]


15

即使是学生,我也被要求查看未(未通过)测试的程序员的代码(在android上创建斐波那契数字的列表)。

虽然我对编码样式非常严格,但我只是读到有人使用“块”样式(请阅读注释!)

在我的职位上,我建议不要雇用使用这种风格的人。该代码与我所使用的编码风格完全相反。

在寻找编码风格以及如何解决编码风格不足时,我很好奇一件事:我是否应该聘请一个会严重的麻烦 适应公司使用的编码风格?

请:这一般应该是关于编码风格的讨论,那是更好的选择。关于聘请决定的编码风格的重要性!

更多信息:

我不是做出决定的人,我只是根据代码给出我的意见。这个家伙必须通过一次面试,我们的负责人都要检查软技能。如果他通过了这一点,那么他就必须通过我们的小技巧测试,这是有时要求我检查书面代码的地方。我不能说是或否。我只想知道编码样式对我的审查应该有多重要...


9
聪明。而不是删除“严重的麻烦调整”(事实不支持),而是通过一行。好像这实际上改变了关于别人态度的毫无根据的主张。
S.Lott

2
编码样式是您应关注的最不重要的事情。毕竟,这只是一个代码。
SK-logic

7
我试图阅读您的问题,但发现您的格式难以理解。您可以在段落中添加起始缩进吗?'K THX BAI
Dietbuddha 2011年

2
代码一致性(或缺乏一致性)是一个指标。例如,如果某人没有时间来组织他们的代码,那么他们可能也没有时间找出在Subversion中提交新项目的正确位置。他们可能没有时间重构。清单继续。
凯文

10
编码样式非常容易调整。这就像问“这个人穿着黑色西服,但是在我们公司中,我们更喜欢员工穿着深灰色西服。我应该雇用他们吗?” 只需告诉他们您在公司中拥有的样式规则即可。问题解决了。
多汁的露西

Answers:


41

您怎么知道他将难以适应?仅仅是因为他们使用了不同的编码风格?那是很自以为是的。我担任承包商已有很长时间了,无论使用哪种编码风格,您都可以适应。这可能需要一些时间,但习惯会很快形成。

我确实希望通过编码样式,您不仅仅意味着缩进和布局。使用代码格式化程序并将其集成到您的版本控制系统中很容易解决。

用编码风格来表示诸如命名,一般顺序,单元分隔以及涉及可读性和可维护性的所有其他事情,编码风格最重要的是拥有一个。没有哪一个。没有编码风格是明确的危险信号。

关于某人使用的任何编码样式的第二个最重要的事情是,他们始终使用它。当某人似乎使用一种编码样式,但经常对其使用“罪恶”时,那就是另一个明确的危险信号。


5
+1没有一个,或者一直不使用它是“红色标志”,而没有一个不同的样式。
jv42 2011年

1
我完全同意“至少始终如一地使用它”。那是我查看代码时最重要的事情。但是您必须承认,代码样式/代码格式是您在查看外来代码时的第一印象...
WarrenFaith 2011年

3
@WarrenFaith:所以你凭封面来判断一本书吗?:-)认真地说,是的,的确给人以第一印象,但我认为在面试时,您会注意外观之外的问题,并且不要仅仅因为他当前的风格与您的风格不匹配而忽略优秀的开发人员。
Marjan Venema

+1表示一致性:缺乏风格通常表示它们没有写太多。当您写作时,您会养成习惯。
Matthieu M.

1
我讨厌自动代码格式化程序,但是我可以接受对它们的需要。他们似乎只是在所有错误的地方选择换行。是的,我说的是日食。
凯文

27

在为近一百个不同客户的数百个不同项目进行编程后,让我强调一点。

编码风格(以及对编码风格的质疑)完全浪费时间。

克服它。

我已经从许多不同的程序员那里阅读了很多代码。(假设团队的中位数为5个团队和100个不同的团队。这是500个同事。)风格无关紧要。

我看过漂亮但病理错误的代码。

[有一个限制。故意混淆是终止的理由。缺少这些,样式就是浪费时间。]

编码风格是“最后的疆界”

如果您已经解决了软件开发的所有问题;如果您可以立即或多或少地产生无错误的代码;如果您的质量水平很高,那么您将不再有错误修复队列;如果您的可用性如此出色,则不再需要帮助台;如果您能够无情地优化到没有服务器场,而是通过iPad运行企业的地步...

当没有其他需要解决的地方时,您最终可以专注于编码样式。

在此之前,存在许多比样式更大,更有价值的问题。


2
@WarrenFaith:我不能这么强烈地说。不要紧。我再说一遍。我已经从成百上千的程序员那里阅读了(专业地,有偿,有偿工作)。不要紧。这不是第一印象:正确性和清晰度是第一印象。
S.Lott

2
@WarrenFaith:故意晦涩难懂。“如果您根本无法阅读代码”,这可能是读者和作者所面临的问题。我再说一遍。我已经从成百上千的程序员那里读到(专业地,有偿,按小时收费)代码。从未发生过“简直看不懂”。风格无所谓。
S.Lott

2
编码风格(以及对编码风格的质疑)完全浪费时间。-我同意第二点100%,第一点40%。编码样式确实很重要-如果您的编码中根本没有样式。如果有的话,它的外观并不重要。
Treb 2011年

4
@WarrenFaith:我已经查看了示例,但看不到任何不清楚的地方。它没有格式化,但我没有格式化的代码。没有什么不清楚的。没有任何迹象表明写信的人会不能或不愿意遵守团队标准。@ S.Lott是正确的。没关系
乔尔·埃瑟顿

4
//Important在每一行上使用。啊 每行代码都很重要,或者应该将其删除。
S.Lott

7

根据编码风格判断程序员的势利程度是50%,不安全感是50%。

我希望我的代码看起来整洁,干净,听起来就像OP中链接的那个家伙一样。我们的代码看起来并不一样,但是我们都使用一种样式,可以帮助我们在回到代码时理解代码。我完全理解他的代码完全没有问题,并且我怀疑OP是否做到了。编码风格的“建议”不过是一种简单而便宜的方法,您可以在其中表达出对于为什么花括号应该放在下一行的巨大智慧。没关系。使代码难以阅读的是:

  • 没有描述它们代表什么的疯狂的命名约定(或缺少这些约定)。
  • 疯狂的程序流,难以分辨正在发生的事情(goto,尝试/捕获业务逻辑等)。
  • 疯狂的长功能所能完成的事情超出了大脑所能追踪的范围。

我很难想象没有任何代码可以执行上面列出的所有操作,但是仍然很难阅读,尤其是使用Style Cop之类的工具时。


7

在决定雇用某人时,将代码格式作为一个因素是荒谬的

  1. 还有许多其他重要因素需要考虑。
  2. 大多数开发人员可以适应他们的风格。
  3. 如果格式很重要,请使用代码重新格式化和棉绒检查器。

不雇用优秀的开发人员,因为在逗号变得愚蠢之后他没有添加空格。


4

我想您在公司中有正式的格式化样式。

然后,非常容易地将任何源重新格式化为正式样式,并且最好使其在每次保存源文件时自动发生。

任何值得他精打细算的程序员都会喜欢上它,因为它通过最小化提交差异来确保更高的质量。


忘记了提交问题...是的,我们有一种官方的格式设置样式,并且在保存之前也会自动进行格式化。
WarrenFaith 2011年

@Warren,好吧,然后在面试中说出来,并确保程序员理解这很重要。然后,如果他想保留这份工作,就应由他履行诺言。

4

使用StyleCop

如果您使用的是Visual Studio,则始终可以在编译时强制使用StyleCop规则,以确保代码至少可读。

我拒绝可以说是非标准样式的无法阅读的代码,因为将来它将变得非常难以维护 -即使是作者本人也是如此。过去已经多次证明这一点。

CVS集成代码格式=最佳解决方案

如果任何CVS支持签入时的自动代码格式化,那将是非常不错的。您只需设置样式优先级,代码就会在保存之前进行格式化。这将使开发人员特定的样式在代码格式方面过时。如果某些开发人员使用不同的缩进字符,我可以看到问题。对我来说,查看不同的代码并没有太大的问题(而且我可以轻松,快速地重新格式化),但是DIFF变得更难处理。DIFF工具中有很多误报。


所以...如果某家公司发明了自己的C#编码标准,那会是一个危险信号吗?
工作

1
@Job:不一定是因为StyleCop允许添加其他规则。我知道我已经写了其中的两个,它们在SPACE之上强制执行了TAB,而这些都不是最初的。但想法是可以强制使用编码样式,这将使拥有统一的代码变得更加容易。
罗伯特·科里特尼克

如果他们的风格又恢复了StyleCop的风格,并且如果他们根本不使用StyleCop会怎么样?
约伯

@工作。除非有人不像以前的Fortran那样编写C#代码(有人用80列固定布局?),否则我仍然认为可以要求遵循编码风格。如果某人是一个伟大的开发人员,您可以提醒他们改善自己的风格(或让他们证明自己的风格胜过我们)。这就是代码审查的目的。任何代码都可以快速重新格式化,但至少应遵循命名约定。但这绝不是招募的危险信号。不应该。
罗伯特·科里特尼克

3

远低于以下更重要的细节:

  • 团队健身
  • 解决问题的能力
  • 通讯

上面列出了最后两个的大多数人都可以学习编码样式。

但是,我通常会在最终面试之前看到一个代码示例,并且如果编码风格与我们所用的语言相距甚远,我将重点关注暴露其适应能力的问题。


就我而言,这通常是我从那家伙
身上

@WarrenFaith-好的,但是您永远不会基于如此少的信息就一手做出雇用某人的决定,是吗?您只是在征求意见。
pdr

真正。我从技术角度给出意见,并且软技能也很重要。而且,我们只测试至少在面试中通过软技能“测试”的人。但是我对编码风格应该对我的意见产生影响感到好奇……
WarrenFaith 2011年

@WarrenFaith-在您的位置上,我会提到它,但这只是一个旁注,而不是非常重要的内容。
pdr

我基本上只是列出赞成和反对的清单,并为我们的CTO解释和说明理由。最终决定权在他身上……
WarrenFaith 2011年

3

只要样式是一致的,并且该人能够适应(更改)另一种样式,我就看不到任何问题。

如果当前样式与您使用的样式不同,并不表示它不好。对于候选人来说,这可能是完全有意义的。

就像其他人说的那样,适应困难可能是唯一的问题。


0

我不会说这绝对不是聘用,但这是对这个人的强烈反对。

我实际上不会担心编码样式,但是会担心这种无法适应是普遍问题的症状。我担心候选人也会发现很难适应团队文化的其他方面。

如果您不能全神贯注地使用帕斯卡式而不是骆驼式机壳,那么如果要喝最后一杯咖啡,就很难记住要开始一批新咖啡了。这种事情对团队可能真的有害。

(是的,我是咖啡因上瘾者。)


“不良的编码风格”带来的问题通常是经验不足。当我看到最多的初学者时,他们通常会缺乏所谓的编码风格。
WarrenFaith 2011年

?? “对这个人的强烈反对”……“实际上不用担心编码风格”。哪有 有关系还是没有关系?很难从答案中看出您的建议是什么。你能澄清一下吗?
S.Lott

@ S.Lott:哪一个?-当然可以。不良的编码风格是一种不良习惯,大多数人都可以学会摆脱它。这是他们无法(或不会)得知您有问题的时候。
Treb 2011年

0

我认为,良好的代码风格对于程序员的工作至关重要。

拥有良好的代码风格是个人发展的问题。它指示该程序员已经达到的级别。

问题是您的公司是否需要“高级专业人员”或“高潜力”。如果您需要“高级专业人员”并且没有学习和发展的余地-代码样式是淘汰标准。

如果有发展和程序员成长的空间,则最好注意他或她学习快速或具有创造力的能力。

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.