阅读"计算科学的Python脚本"我在讨论生成器的部分中遇到了following text:
是快速编写生成器还是实现类方法
__iter__
和__next__
取决于迭代器的应用程序,个人尝试,可读性和复杂性。由于生成器非常紧凑且对大多数程序员来说都不熟悉,因此使用__iter__
和__next__
时,代码的可读性往往低于相应的版本。
这让我想知道(其他程序员)的不熟悉是否是一个很好的理由不使用相对新的强大的语言功能(如Python生成器)。 如果你不使用它,它怎么会变得流行和熟悉?
所以,我的问题是:不熟悉有时候是不使用新语言功能的好理由吗?
答案 0 :(得分:1)
您的拥有对语言功能的不熟悉可能是轻描淡写的理由。例如,在C#中,如果您不确定object y = func1() ?? func2();
和object y = func1() != null ? func1() : func2();
之间的差异(提示:从左到右的评估顺序),那么也许您最好不要写相应的{ {1}}条款只是因为它更清楚实际发生了什么。知道语言细微差别的人可能会更好地解决并稍后进行重构,与此同时,成本通常很低。
但是,如果您知道如何使用语言功能,我认为没有理由避免使用它,因为其他人可能会觉得难以理解。如果你真的觉得有必要,那么添加一个评论(例如,可能是“if
”),以帮助其他开发人员知道如果他们无法从代码中弄清楚它在做什么,该寻找什么,你担心他们可能不得不单独行动。
请注意,这是关于生产代码的。试验肯定有它的位置,但它的位置不一定在主线代码库中。我总是保留一个“划伤”项目,当我想尝试一些事情而不会对任何其他事情产生影响时。在那里,我经常把自由放在我生产或生产代码的范围之外。
答案 1 :(得分:0)
我不会说不熟练是不使用新语言功能的好理由。或者就此而言,使用新语言。
如果您对与多家供应商合作有任何疑虑,那么对工具供应商的新功能缺乏支持可能是一个原因。
答案 2 :(得分:0)
由于这个问题是主观的,我会表达相反的意见。
如果您在有代码审查的地方工作,您很快就会发现您的同事认为“不熟悉”的内容。
由于他们还必须维护代码,因此您可以尝试帮助他们熟悉“不熟悉的”代码。但是,它最终是一种判断,有时,你认为清晰的代码,不是。