我应该指出某人代码中与拼写/语法相关的错误吗?[关闭]


106

在查看同事的代码时,我遇到了函数名称中的一些拼写错误以及语法错误,例如函数名称和变量名称中的“ doesUserHasPermission()”而不是“ doesUserHavePermission()”。

我应该向他指出这些,还是因为注意到这些而太学究了?


3
我可能会小心,如果该人不是他们的第二语言,那么实际上会需要他们的英语帮助。有些人满足于知道自己不具备表达结构化思想的能力,只是不具备正确的英语能力。如果英语是他们的母语,那是的,我认为语法不好是一个问题。
宫阪丽

31
是。当您使用错误拼写的API时,它的确令人沮丧。它像野火一样蔓延。因此最好尽快进行更正。

9
@Rei:在专业环境中,英语是否为母语是无关紧要的;如果这对他们来说不是太糟糕,但这不是借口,则应遵循相同的标准。
Thomas Bonini 2010年

4
@Rei,由于这个原因,我看到的许多编程工作都需要熟练掌握母语。能够讨论需求,设计,规格和构造对于整个软件产品而言都是非常重要的。
Stephen Furlani 2010年

Answers:


205

带有拼写和语法错误的代码是无法维护的

  • 人们不会记得不好的语法,因此他们将尝试按应编写的方式调用该函数,这就是错误发生的方式。

  • 如果您不知道其拼写方式,则无法在代码中使用grep。

  • 大多数进行语法/拼写检查的人不一致地这样做,因此他们会引入许多名称不匹配的错误。在不需要使用变量之前明确声明变量的语言中,这尤其成问题,因为您可以引入新的拼写,并且您的代码也不会停顿不前,让您知道自己搞砸了。

纠正这些问题不是徒劳的,也不是其他人对自己的才智,识字等的看法所必需的(尽管这是一个很大的副作用);这是关于编写高质量,可维护的代码


7
+1有时,保持某人的感觉很重要,但是在进行代码审查时……如果您发现它,则发表评论是一个公平的游戏。我公司使用坩埚进行代码审查,这使所有审查都可以看到它被捕获,并允许审查者将其标记为不是缺陷,而是样式。
opello

15
+1-一旦拼写和语法错误进入了API,它们几乎不可能再次消失。我花了三年的大部分时间来写“ Avtivity”而不是“ Activity”,这样做总是对身体造成伤害
John Bode 2010年

7
不论好坏,良好的编程习惯通常都归结为学究。另外,我想找到Referrer在原始HTTP规范中拼写错误并将其踢到脚踝的人。当然,那可能是Berners-Lee,所以之后我会感到内...……
Malvolio 2010年

2
@Stephan Furlani:这就是我要提出的观点;它是我们不拥有的API的一部分。我们无法最终修复它,并且修复它的过程非常冗长且冗长,以至于没有人希望弄乱它。
约翰·波德

2
@John Bode,我想您应该创建一个包装函数:) C#为此有一个巧妙的窍门(尽管我忘记了它的名字)。
工作


29

不要在正式的代码审查中指出它们是缺陷。而是标记一个列表,然后与他/她私下讨论。对此尽可能地保持外交态度,只是“嘿,我注意到了,我遇到了一些真正鄙视这种事情的人,他们认为这使程序员显得粗心和草率。”

如果这是客户要查看的代码,则绝对必须更正。不管喜欢与否,它确实反映了您公司的声誉。

对于您给出的示例,我怀疑它最初是以UserHasPermission开头的,还有其他人告诉他,本地实践是dosUserBlahBlah()而不是UserBlahBlah(),而他只是忽略了语法更改。


12
说这是关于别人的看法的,这似乎并不重要。说实话-他们使代码难以维护和构建。
HedgeMage 2010年

5
@HedgeMage:我对这样的事情的个人经验是,有些人对他们认为是对自己的批评的事情极度敏感。更糟糕的是,如果您似乎要批评的人受到管理人员的喜爱,那么这可能会带来非常丑陋的政治影响。(是的,我有伤痕来证明这一点。)而且我已经看到,只要代码有效,对于“有效”的某些定义,组织实际上并不关心这种事情。我个人的感觉是,如果您走得平缓,则有更多的机会修复它,而不会出现其他头痛。
约翰·R·斯特罗姆

12
@John我当然可以看到,糟糕的工作环境会迫使某人不得不像这样行走,但是如果这首先是一个问题,那将一个糟糕的情况。自我如此脆弱(以及一种允许他们恶作剧的工作场所文化)的人从一开始就不利于业务发展。
HedgeMage 2010年

6
大多数成熟的程序员都很好地接受批评。毕竟,那就是同行评审的目的(我们都进行代码评审,不是吗?)批判注释,函数名等的拼写和语法是完全可以的。这不仅反映了作者,而且反映了作者在他们的整个组织中。
quick_now 2010年

6
我在这里同意HedgeMage,如果您在代码审查期间无法指出这样的错误(特别是当它们在客观上是错误的,例如问题中的示例)时,您将遇到更大的问题...
Dean Harding

10

自己改变。

希望您所处的环境中代码“所有权”不是问题。如果您可以在源代码管理中访问该项目,则只需自己修复即可。如果您看到某个特定的同事一致地犯相同类型的语法或拼写错误,则可能要指出这一点,但这取决于您的关系,此人是否是说英语的人以及他们的总体接受程度。但是,无论您是否决定执行此操作,都请静静地进行修复。我会一直这样做,如果我看到一个错字,尤其是在方法签名或公共属性中,我会修复它。有时候,我什至无法抗拒在评论中修正错字的诱惑,但这就是我自己:)


5
然后您发现您刚刚破坏了第三个人的代码。你需要让这些事情尽快解决,不只是当你的第一个男人在检查后一切得到它。
大卫·索恩利

如果您担心对任何一段代码的修复都可能破坏“别人的”代码,并且您无话可说,那么比拼写有更大的问题。
Cornel Masson

@CornelMasson:并非如此。这是设计API的关键部分。
Lightness Races in Orbit

6

我是一名开发人员,其母语不是英语,实际上是荷兰语,并且根本不介意有人指出我语法或拼写错误。这样,我可以不断提高我的英语水平。纠正所有源代码中的所有错误当然并不难。可以轻松编写一个简单的Perl脚本来遍历文件夹中的所有文件。也许甚至可以用sed完成?我不知道。

因此,我当然会指出其他人的代码中的语法或拼写错误,但前提是我绝对确定这是正确的。


6

我想在这里值得一提的是,HTTP协议中的HTTP Referrer标头被误称为“ referer”(并且我们必须忍受它/我们已经学会了使用它。):)


10
而且我们再也不想看到这种事情了。
David Thornley 2010年

4

我同意其他答案,即带有语法错误的代码是无法维护的。

我还想添加一些内容:

  • 代码通常是由不太会说英语和/或英语不是其母语的人编写的。如果您检查的代码中有语法错误,这并不意味着您的同事犯了此错误。也许只是网站上的复制粘贴。
  • 如果英语不是您同事的母语,则告诉她/他有关此错误的信息可能是一个好主意,也可能是一个很糟糕的主意。我来自法国,我总是欢迎对我用英语犯的错误发表评论,因为这是我将来避免这些错误的唯一方法。另一方面,我认识几个人,如果您将他们所犯的语法错误告诉他们,他们会感到非常受伤。
  • 就像约翰·R·斯特罗姆(John R. Strohm)所说的那样,切勿公开进行。大多数人会对此感到非常恼火。

11
“也许只是网站上的复制粘贴。” 然后,复制它的人应该已经发现问题并解决了。逐字复制并留下错误比自己编写和创建错误同样糟糕。“我知道有几个人,如果你告诉他们他们犯的语法错误,他们会感到非常受伤。” 在业务中,我们每个人都应表现为成年人和同事的齐心协力,以实现共同的目标。提出问题的人需要使用机智,受到批评的人需要接受并从中发展。
锡人2010年

3
我100%同意,作为专业人士,我们应该表现得像成年人,而不是个人。但这绝对需要指出和纠正。是的,应该使用机智,并且应该根据个人情况采取相应的方法。但是,如果您在鼓励完全避免该问题的环境中,也许是时候离开了。这将导致环境中毒。
Mark Freedman 2010年

任何拼写错误都可以通过简单的Google搜索来检查
JoelFan 2010年

2

我建议使用带有内置拼写检查器的IDE。IntelliJ Idea在Java程序方面做得很棒。它捕获了许多令人尴尬的错别字,不仅在功能名称方面,而且在例如异常消息中,用户都可以看到。产生充满错字的消息的程序不会激发很大的信心。


0

我只有在

  • 它影响程序的使用
  • 它影响程序的准确性
  • 我明确知道作者希望得到纠正。

顺便提一句,如果您的函数名称足够长而无法使用语法,则它们可能太长。在给出的示例中,我将调用函数userHasPermission并将“语法”移至您的代码中,如下所示:

if userHasPermission() ...

1
但是,语法错误的可能性仍然相同,因为在这种情况下userHavePermission()会出错。
Dean Harding 2010年

但这就是重点! userHasPermission()表示由于语法〜OR〜而返回布尔值,这可能表示它设置了用户权限。(Officer具有桥::用户具有权限)。还是很模糊。
Stephen Furlani 2010年

尽管我同意Q中的示例名称不必要地长,但我对“过长”的概括提出了警告。在这种情况下,该概念可以用更少的词来表达,因此应该缩短。但是,“太长”是什么?是否有字符或字数限制?
LS

0

这在我的项目中也发生过很多(由希伯来语,俄语或阿拉伯语为母语的人居住),但甚至达到了更高的水平-我经常看到代码使用一些晦涩的术语,而这些术语恰恰是字典翻译成的语言作者的想法,与他们的意思无关...

就个人而言,当它如此频繁地发生并且有如此多的团队成员甚至在我加入该项目之前就可能已经编写了代码时,我倾向于忽略它,因为这无关紧要。

但是,如果我将某些工作与很久以前编写的代码或注释放在同一个文件中,并且其中包含错别字,则我将更正它们,只是因为这不是太多工作。


0

黄金法则适用

对别人做,就像您希望别人对您做的那样。

我希望其他人对这种事情有所支持,所以我会帮助其他人。仁慈和支持对您有利。


2
含糊不清-1-我不知道您正在建议提问者做什么。
HedgeMage 2010年

@HedgeMage,我建议OP申请en.wikipedia.org/wiki/The_Golden_Rule
kevpie 2010年

2
我很熟悉 除了显然愚蠢(没有理由相信爱丽丝想要被对待的方式就是鲍勃想要被对待的方式)之外,它还分散了真正的问题:创建好的代码。当然,我不会对此感到讨厌,但是我不会基于是否编写错误代码的人是否希望提出技术问题而提出建议!
HedgeMage 2010年

我认为@HedgeMage的抱怨可以这样表示:我希望代码在可用的时间和资源允许的范围内达到最高质量,因为我关心项目以及我今后的工作。鲍勃(Bob)希望避免对可纠正的错误进行批评,因为他对批评的态度不好。我们将以完全不同的方式实施“黄金法则”。
失明的眼神,2014年

该建议意味着,OP将按照他的意愿进行操作。不要对待鲍勃如何对待鲍勃。我鼓励OP纠正Bob,因为他(OP)想针对相同的错误进行纠正,特别是在OP共享的情况下。
kevpie 2014年

0

与许多其他良好的编程习惯一样,在程序中实施拼写政策的唯一客观,非政治且有效的方法是,在预提交过程中将其自动化。即使您必须为此目的编写自己的工具,自动化也可以使您免受大量的不满。


3
许多最重要的错误无法自动捕获。这也适用于拼写和语法。您可以进行自动检查,但结果必须等同于警告。这是因为拼写检查器会同时产生误报(例如专有名词)和误报(也有两个to)。因此,必须进行手动干预。
马修·弗拉申

那种自动化并不能解决这些问题,它只会捕获人们犯的一些错误。
10年

自动更正??? 互联网上有许多自动更正“失败”的示例。那绝对不好。
Florian F

0

这是代码中的一个小错误,但是是一个错误。像对待其他任何错误一样对待它。我的政策始终是假设我的同事有能力,并且以这种方式对待他们,直到他们证明不是。

如果是单个错误,我可能会对其进行修复并检入。如果是一种模式,我可能会开始请该同事审查这些修复。让他们知道您认为他们是一个很好的编码器,但这将是值得改进的地方。不过,我认为我不会对此类事情大有作为。

只要您不把它当作一个大问题,就应该很容易地将这位同事放在一个可以提高自己的状态而又不会自负的位置上。


-1

userPermission()也许?--

我碰到的最后一个问题是,由于类名被拼写突出,因此搜索结果的全球性问题并未得到强调。发现非常模糊的错误。


不加评论地投降是可憎的。
mplungjan '16

-1

可以指出,但不要浪费时间检查拼写错误。使用工具在CI上自动执行此操作。在.net上,fxCop可以执行此操作...


-2

这主要取决于错误的种类,错误的普遍程度和严重程度,以及它实际上是善意的错误,还是取决于您的措辞方式。

当某些白痴将5分钟的代码审核拖到半小时时,我个人无法忍受,因为他希望将所有内容重命名为他将要使用的方式,而所有评论都必须重新措辞,只是因为他喜欢坚持桨。表示“正在加载数据对象” 不需要更改为“数据对象加载器组件现在将从数据对象存储组件加载相关的数据对象”。

/ rant :)


2
坚持我的方式是一回事。坚持使用正确的拼写和语法是另一回事。
David Thornley 2010年

不能完全确定为什么我的回答不值得一提,但没关系...另外,我对David的评论的答复去了哪里?无论如何,在开发中并不总是希望100%正确的英语语法。在我上面的示例中,“加载数据对象”不是完整的句子,而是二者中更可取的措词-简洁,易于本地化并且不占用太多空间。
JohnL 2010年
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.