在查看同事的代码时,我遇到了函数名称中的一些拼写错误以及语法错误,例如函数名称和变量名称中的“ doesUserHasPermission()”而不是“ doesUserHavePermission()”。
我应该向他指出这些,还是因为注意到这些而太学究了?
HTTP-Referer
经常打扰我。zh.wikipedia.org/wiki/HTTP_referrer#Origin_of_the_term_referer
在查看同事的代码时,我遇到了函数名称中的一些拼写错误以及语法错误,例如函数名称和变量名称中的“ doesUserHasPermission()”而不是“ doesUserHavePermission()”。
我应该向他指出这些,还是因为注意到这些而太学究了?
HTTP-Referer
经常打扰我。zh.wikipedia.org/wiki/HTTP_referrer#Origin_of_the_term_referer
Answers:
带有拼写和语法错误的代码是无法维护的。
人们不会记得不好的语法,因此他们将尝试按应编写的方式调用该函数,这就是错误发生的方式。
如果您不知道其拼写方式,则无法在代码中使用grep。
大多数进行语法/拼写检查的人不一致地这样做,因此他们会引入许多名称不匹配的错误。在不需要使用变量之前明确声明变量的语言中,这尤其成问题,因为您可以引入新的拼写,并且您的代码也不会停顿不前,让您知道自己搞砸了。
纠正这些问题不是徒劳的,也不是其他人对自己的才智,识字等的看法所必需的(尽管这是一个很大的副作用);这是关于编写高质量,可维护的代码。
Referrer
在原始HTTP规范中拼写错误并将其踢到脚踝的人。当然,那可能是Berners-Lee,所以之后我会感到内...……
当然是。如果名称在语法上正确,则更容易记住该名称。试图记住名字和语法错误完全是另一回事。
不要在正式的代码审查中指出它们是缺陷。而是标记一个列表,然后与他/她私下讨论。对此尽可能地保持外交态度,只是“嘿,我注意到了,我遇到了一些真正鄙视这种事情的人,他们认为这使程序员显得粗心和草率。”
如果这是客户要查看的代码,则绝对必须更正。不管喜欢与否,它确实反映了您公司的声誉。
对于您给出的示例,我怀疑它最初是以UserHasPermission开头的,还有其他人告诉他,本地实践是dosUserBlahBlah()而不是UserBlahBlah(),而他只是忽略了语法更改。
自己改变。
希望您所处的环境中代码“所有权”不是问题。如果您可以在源代码管理中访问该项目,则只需自己修复即可。如果您看到某个特定的同事一致地犯相同类型的语法或拼写错误,则可能要指出这一点,但这取决于您的关系,此人是否是说英语的人以及他们的总体接受程度。但是,无论您是否决定执行此操作,都请静静地进行修复。我会一直这样做,如果我看到一个错字,尤其是在方法签名或公共属性中,我会修复它。有时候,我什至无法抗拒在评论中修正错字的诱惑,但这就是我自己:)
我是一名开发人员,其母语不是英语,实际上是荷兰语,并且根本不介意有人指出我语法或拼写错误。这样,我可以不断提高我的英语水平。纠正所有源代码中的所有错误当然并不难。可以轻松编写一个简单的Perl脚本来遍历文件夹中的所有文件。也许甚至可以用sed完成?我不知道。
因此,我当然会指出其他人的代码中的语法或拼写错误,但前提是我绝对确定这是正确的。
我想在这里值得一提的是,HTTP协议中的HTTP Referrer标头被误称为“ referer”(并且我们必须忍受它/我们已经学会了使用它。):)
我同意其他答案,即带有语法错误的代码是无法维护的。
我还想添加一些内容:
我只有在
顺便提一句,如果您的函数名称足够长而无法使用语法,则它们可能太长。在给出的示例中,我将调用函数userHasPermission并将“语法”移至您的代码中,如下所示:
if userHasPermission() ...
userHavePermission()
会出错。
userHasPermission()
表示由于语法〜OR〜而返回布尔值,这可能表示它设置了用户权限。(Officer具有桥::用户具有权限)。还是很模糊。
黄金法则适用
对别人做,就像您希望别人对您做的那样。
我希望其他人对这种事情有所支持,所以我会帮助其他人。仁慈和支持对您有利。
userPermission()也许?--
我碰到的最后一个问题是,由于类名被拼写突出,因此搜索结果的全球性问题并未得到强调。发现非常模糊的错误。
这主要取决于错误的种类,错误的普遍程度和严重程度,以及它实际上是善意的错误,还是取决于您的措辞方式。
当某些白痴将5分钟的代码审核拖到半小时时,我个人无法忍受,因为他希望将所有内容重命名为他将要使用的方式,而所有评论都必须重新措辞,只是因为他喜欢坚持桨。表示“正在加载数据对象” 不需要更改为“数据对象加载器组件现在将从数据对象存储组件加载相关的数据对象”。
/ rant :)