标识符的详细程度如何影响程序员的性能?

Dan*_*ski 10 language-agnostic coding-style

我一直在想:是否有任何确凿的事实表明更短或更长的标识符更好?

例:

clrscr()
Run Code Online (Sandbox Code Playgroud)

反对

ClearScreen()
Run Code Online (Sandbox Code Playgroud)

短标识符应该更快阅读,因为字符越少但标识符越长通常更像自然语言,因此阅读速度也应该更快.

是否有其他方面表明简短或冗长的风格?

编辑:只是为了澄清:我没有问:"会什么?在这种情况下做的." 我问理由是偏爱另一个,即这不是民意调查问题.

,如果可以的话,添加一些原因,为什么一个宁愿一个风格比其他.

Ric*_*ler 21

我会清楚说明冗长或严重.

ClearScreen() 
Run Code Online (Sandbox Code Playgroud)

比解析更容易

clrscr() 
Run Code Online (Sandbox Code Playgroud)

在我看来,但是

ClearScreenBeforeRerenderingPage() 
Run Code Online (Sandbox Code Playgroud)

只是噪音.

  • 值得注意的是,像clrscr()和malloc()这样的C函数是如此命名的,因为最初对名称有六个字符的限制.如果C标准今天重新编写,我怀疑它们不会被命名为clearScreen()和memoryAllocate(). (6认同)
  • 更重要的是,ClearScreenBeforeRenderingPage()意味着什么时候应该调用它永远不会好. (2认同)

Car*_*ter 14

缩写给读者带来了更大的负担.他们含糊不清; 他们是间接的; 他们更难区别对待.他们也给作家带来了负担,因为他/她必须一直在问,"那是Cmd for Command,还是Cmnd ......还是Cm?".它们发生冲突 - 给定的缩写规则可以为两个(或更多)不同的单词生成相同的缩写.

因为它们含糊不清,读者必须花时间思考意图是什么词; 如果这个词本身存在,读者只需要考虑它的含义.

因为它们是间接的,所以它们类似于指针 - 就像每个指针取消引用消耗的处理时间一样,每个缩写消耗一点(人)处理时间,占用额外的内存.


tom*_*ing 11

当然.NET开发人员应该遵循.NET命名准则.

这表明应该使用全名,而不是缩写:

不要使用缩写或收缩作为标识符名称的一部分.例如,使用GetWindow而不是GetWin.


tea*_*bot 9

就个人而言,我喜欢尝试遵循鲍勃叔叔的清洁代码的智慧.

对我而言,它表明Code应该像散文一样.通过使用描述性名称并确保方法具有单一责任,我们可以编写准确描述程序员意图避免评论需求的代码(在大多数情况下).

他接着观察到,当我们编写代码时,我们经常花90%的时间阅读周围的代码和相关代码.因此,通过编写本质上可读的代码,我们在编写代码时可以更有效率.


Dav*_*ler 8

我记得前一段时间拉里沃尔的一次谈话,当你在团队中有非英语母语人士时,他谈到了标识符的冗长.

ClearScreenBeforeRerenderingPage()

如果你是英语母语人士,请解析好.但他建议(和经验表明):

Clear_Screen_Before_Rerendering_Page()

好多了

如果不同时使用大写和小写,效果会加剧.


sbi*_*sbi 7

我的基本规则是每行代码只写一次,但读10,100或1000次.据此,打字的努力完全无关紧要.重要的是努力阅读一些东西.

当然,仅这一点仍然留下足够的主观意见空间(clrscrn足够可读吗?),但至少是以某种方式缩小了领域.


Rob*_*lls 7

请直接进入Steve McConnell的"代码完整"(已完成的亚马逊链接)的相关章节.

具体来说,第11章"变量名称的力量".


Gre*_*zky 5

我个人的偏好是有冗长的公共标识符和短私有标识符.

公开我指的是类名,方法名,全局变量和常量,包,命名空间 - 简而言之,任何可以从大量地方和大量人员访问的东西.

私有我指的是局部变量,私有成员,有时候是参数 - 只能从有限的局部范围内访问的东西和仅由单个开发人员访问的东西.

  • 我想你误解了我的观点。如果要从多个点访问该变​​量,请务必继续并正确命名。另一方面,通常“for (int i=0;;)”比“for (int myIterator=0;;)”完全有效并且更具可读性。无论如何,这些只是指导方针,而不是严格的规则——只做有意义的事情。 (2认同)

Mar*_*ett 5

还要考虑它的使用位置,ClearScreen()可能会单独出现.
然而,当了解到标识符必须易于阅读的新程序员时,你会感到畏缩,产生类似的代码.

 screenCoordinateVertical = gradientOfLine * screenCoordinateHoriontal + screenCoordinateOrigin;
Run Code Online (Sandbox Code Playgroud)

代替

 y = m*x + C;
Run Code Online (Sandbox Code Playgroud)

  • 实际上,我在y = m*x + C时畏缩它对于没有数学图形背景的人来说是混淆的. (2认同)