问题并不是真正的关于元编程是否行得通,而是关于是否可以变得比团队中的其他人更好,所以这里有一些关于我如何看待它的争议点...
我最近搬到了一个新的工作中,在一个更大的团队中工作,这种[元编程]使我的一些同事感到担心,因为他们不理解。
他们担心您会比他们更好。那很好。您将成为新专家。您刚刚摧毁了他们的现状世界。
我总是尽力利用这种语言的全部潜力,但是我的一些(并非全部)同事认为这是一种风险(有些人欢迎这种方法)。
当然,没有人比其他人更喜欢没有技能,因此他们试图阻止您使用对他们来说太复杂的技术。他们要么无法理解,要么就不会去做,因为他们现在感到安全。
我同意编写团队中其他人无法理解的代码是一个问题。
我不。我认为它正在显示您的专业知识。
我的问题是,谁是对的,我该怎么办?
您应该使用所有技能来编写可以编写的最佳代码,并且不要忽视那些不了解它的人。否则,您将被困在他们的水平上,只是一个普通的编码器。变得比别人更好是一件好事,而要努力变得比别人更好是一件好事。如果您不尝试使用任何新事物或做不同的事情,您将永远不会获得任何新的经验。
我知道我会被否决,但这就是它的样子。超越团队中的其他人不是犯罪,使用技能也不是犯罪。只是每个人都害怕承认这一点……因为他们站在非技术方面,并且讨厌新来的人突然可以做一些他们做不到的事情。如果他们很聪明,他们会向您寻求帮助和建议,而不是因为您的代码难以理解而批评您。
编辑
这个问题似乎有很多困惑。正如注释所示,许多人认为这与常规代码的可读性有关。不,这不对。这是因为某些团队成员不理解某些语言功能/结构而应予以禁止或避免。
我的回答是不。他们不应该被禁止。如果您想禁止某事,您将如何做?您必须准备某种问卷调查表,以了解您的团队成员可以做什么和不能做什么-或者宁愿不想学习,因为我认为所有语言特性在某个地方都很有用,因此了解它们并能够使用它们总是好,您知道的越多,您可以编写的代码越好。您还需要一个比例尺来定义哪些功能是初学者,中级或高级的。
为了说明这种限制是多么愚蠢,让我们举一个非常简单的例子:您将被聘为软件工程师,但您的未来老板告诉您,do/while
由于有几个人,您将不允许使用循环以前从未使用过并且也不会使用的团队,因为他们一直在for
对所有内容使用循环,因此他们发现do/while
循环令人困惑。
现在您认为这是愚蠢和疯狂的,不是吗?但是禁止其他功能。一些人可以使用它们,而另一些人则不想学习它们。
如果您知道有些东西可以让您以更少的精力完成相同的工作,却又能使可读性更强的代码,为什么还要生成更差的代码呢?
无论您仅使用基本语言功能还是高级功能,都可以使用其中之一来生成同样难以理解且无法维护的代码,因此这是一个完全不同的主题。