变量命名和讲其他语言的团队成员

7
我与印度的几位开发人员合作,其中最大的困难之一是他们对变量命名的方式。起初我非常沮丧,无法理解为什么他们不会恰当地命名事物(是因为懒惰吗?)然而,我意识到他们可能不习惯给变量命名,因为他们所阅读的所有代码都是用英语编写的,而他们所读的英语单词对他们来说几乎没有意义。现在看来,这是显而易见的,如果您不能充分理解英语,就不可能很好地命名变量。
如何与外籍成员合作实现更好的命名实践?
希望我的回答能帮到您!

这是我们组织中常见的问题。我很想看到答案。+1。 - Matthew Jones
8个回答

12

更改团队成员的要求--他们必须具备足够的书面英语理解能力。

编辑:针对Bill K的评论,我认为处理糟糕沟通问题的成本没有计入节省成本的计算中。不,我从未与海外开发人员合作过,但我确实与两位非母语英语的人一起工作,有时候与他们的沟通会慢一些,尽管他们都在美国生活了20年。

此外,我并不希望我的回答是最有用的。只是想表达一个观点。如果你不会雇用某个人来在你的办公室工作,那么为什么要雇用他们从地球另一端为你工作呢?即使你通过代理机构进行招聘,你也间接雇用了每个参与你代码开发的开发人员。

我的经验是,在开发人才方面,贪图便宜可能会付出很高的代价。


通常这是你无法控制的事情。我不知道你是否在这个行业工作过,但通常除了主管级别以下的人员,没有人会自愿与来自其他国家的承包商合作以节省开发成本。考虑到这一点,你的回答可能是正确的,但并不实用。 - Bill K
足够真实,便宜=低价且质量差。 - akf
@Dennis 我完全同意,我不会这样做。事实上,如果我为一家想要把未来托付给另一个国家的开发团队的公司工作,我可能会辞职,因为我会认为这是一家注定要失败的公司——但我的观点是,我从未见过开发人员真正有选择的情况。公司可能会让你觉得你在这件事上有选择权,但无论你多么反对并向他们展示他们错失了成本,他们都会按照他们已经决定的去做。 - Bill K
@Bill,好的,我没有从被迫与离岸团队成员合作并且在这件事上没有发言权的开发人员的角度考虑这个问题。我知道有些公司正在成功地与外包团队合作,但是他们对那些团队成员的技能和沟通要求与内部团队成员一样。 - CoderDennis

7
你可以把“变量命名”作为每次代码审查的一个主题。这将是一个事实性的议程项目,易于讨论。你可以利用这个讨论来衡量他们是否理解自己正在尝试实现的内容。

1
迄今为止,这是唯一可行的想法。在Eclipse/NetBeans中进行代码审查并进行更改——应该很容易。通常情况下,如果您希望项目取得一定的成功,每2-4名海外开发人员就需要有一名专门的开发人员,因此只需将其添加为必须要做的事情之一即可。如果管理层理解了这个原则,他们就不太可能会去海外寻求帮助! - Bill K

4
如果每个人都说同一种语言,并且你不会将代码销售给其他公司,那么用他们的母语编写代码是可以的。
如果每个成员使用不同的语言,则代码应该使用英语编写。尝试制作一个应用中使用最常见单词的字典,每个人都可以查看。在需要时选择英语技能更高的人进行翻译。
当某个单词看起来不正确时,您始终可以进行重构。

3
大多数开发人员应该对技术英语有合理的理解(毕竟,大多数语言中的API都是用英语编写的)。因此,英语似乎是一个不错的选择。变量通常不会有非常困难的名称,例如xCounter,isXYZ等。如果它们很难命名,那么我会认为这是在声明该变量的抽象级别不正确的确切迹象。
有人可能会建议本地化变量名称。我发现这真的很困难,尤其是当代码被位于其他大陆、海外收购的公司等人接手时,更加困难。
某些东西必须要让步☺

2
我不是要批评,但我有一个真正的问题......如果他们英语不够流利以至于无法命名变量,他们怎么能流利地理解基于英语的业务领域模型,更不用说设计和构建解决该领域中实际问题的软件产品了?

他们不太做设计,更多的是实现定制软件、修复错误等。他们遵循相当严格的规范,但代码的维护(除了大量的块复制)可能会成为一个噩梦,因为变量的命名与它们的任务完全无关。 - Shawn
这是一个场景。一支程序员团队非常熟练,大多数人都能理解一些技术英语的书面表达,但是除此之外几乎不会说和写这种语言。由于管理层擅长英语,他们为讲英语的客户编写了一些闭源软件并赢得了声誉。到目前为止,没有人关心他们如何命名实体。然而,现在他们决定与某个美国软件公司合作,后者被他们的声誉所吸引,这时候问题就出现了...丑陋的命名问题浮出水面。就是这样。 - Andriy M

1

在那里找到你正在合作的那个懂一些英语的开发者,并让他们所有人都向他请教变量名称?


1
也许可以让他们用母语描述性地命名变量,然后使用翻译器将其转换为英文?甚至可以添加标记并运行预编译器来进行自动翻译?这只是一个想法。

1

我不确定具体的问题,例如变量名不具有描述性,或者使用的变量名不是英文,变量命名风格不一致等。无论如何,您可以尝试建立详细的编码标准,并使用代码审计或审核来强制执行它们。例如:

  • 不允许将“temp”用作本地变量的名称
  • 必须为变量命名,以便变量的目的明显
  • 始终使用一致的样式来命名变量(例如驼峰命名法)

关键是发布这些规则并对整个组织进行强制执行。


这是我们尝试过的东西。不幸的是,制定关于应该做什么的规则永远无法帮助实际变量名称的内容。他们可能停止使用匈牙利命名法,他们可能始终使用一致的命名法等,但他们永远不会使用像numberOfMissingPageTemplates这样的变量名称 - 它只会是类似于counter这样的东西。 - Shawn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接