避免使用新语言功能,因为大多数程序员都不熟悉?

时间:2011-04-28 14:11:59

标签: language-features

阅读"计算科学的Python脚本"我在讨论生成器的部分中遇到了following text

  

是快速编写生成器还是实现类方法__iter____next__取决于迭代器的应用程序,个人尝试,可读性和复杂性。由于生成器非常紧凑且对大多数程序员来说都不熟悉,因此使用__iter____next__时,代码的可读性往往低于相应的版本。

这让我想知道(其他程序员)的不熟悉是否是一个很好的理由不使用相对新的强大的语言功能(如Python生成器)。 如果你不使用它,它怎么会变得流行和熟悉?

所以,我的问题是:不熟悉有时候是不使用新语言功能的好理由吗?

3 个答案:

答案 0 :(得分:1)

您的拥有对语言功能的不熟悉可能是轻描淡写的理由。例如,在C#中,如果您不确定object y = func1() ?? func2();object y = func1() != null ? func1() : func2();之间的差异(提示:从左到右的评估顺序),那么也许您最好不要写相应的{ {1}}条款只是因为它更清楚实际发生了什么。知道语言细微差别的人可能会更好地解决并稍后进行重构,与此同时,成本通常很低。

但是,如果您知道如何使用语言功能,我认为没有理由避免使用它,因为其他人可能会觉得难以理解。如果你真的觉得有必要,那么添加一个评论(例如,可能是“if”),以帮助其他开发人员知道如果他们无法从代码中弄清楚它在做什么,该寻找什么,你担心他们可能不得不单独行动。

请注意,这是关于生产代码的。试验肯定有它的位置,但它的位置不一定在主线代码库中。我总是保留一个“划伤”项目,当我想尝试一些事情而不会对任何其他事情产生影响时。在那里,我经常把自由放在我生产或生产代码的范围之外。

答案 1 :(得分:0)

我不会说不熟练是不使用新语言功能的好理由。或者就此而言,使用新语言。

如果您对与多家供应商合作有任何疑虑,那么对工具供应商的新功能缺乏支持可能是一个原因。

答案 2 :(得分:0)

由于这个问题是主观的,我会表达相反的意见。

如果您在有代码审查的地方工作,您很快就会发现您的同事认为“不熟悉”的内容。

由于他们还必须维护代码,因此您可以尝试帮助他们熟悉“不熟悉的”代码。但是,它最终是一种判断,有时,你认为清晰的代码,不是。