2010-06-05 128 views
9

假设我有一个变量,它包含文件中搜索引擎名称的数量,你会怎样命名它?长变量名称

  • number_of_seach_engine_names
  • search_engine_name_count
  • num_search_engines
  • 引擎
  • engine_names
  • 其他名字呢?

第一个名称描述了变量包含的内容,但不是太长吗?,有关选择变量名称的任何建议?特别是如何缩短太长的名称或使用什么样的缩写?

+3

我不幸与许多人称它为“nsen”,甚至只是'n'。 只要你的变量和函数名称是一致的和描述性的,不要太担心它(你可能会考虑命名函数作为动词,使你的代码“读”更好)。 如果你曾经用任何无意义的变量维护任何代码,你肯定会诅咒作者(而且地狱有一个特殊的地方保留给那些必须维护自己的代码,遇到麻烦并且仍然不改变方式的人) 。 – Mawg 2010-06-23 01:02:23

+3

很久以前,我曾经剪切和粘贴我的变量和函数名,但是现在大多数IDE都有代码完成,所以要说明性。 我相信可怜的变量命名是一种“代码味道”,并且通常伴随着缺乏结构,缺乏评论等。 也许我会过度的,但不再使用传统的(来自Fortran)'' i,j,k'为循环控制变量。 – Mawg 2010-06-23 01:02:45

+0

你可能会存储在一个数组或字典'引擎',然后说'engines.count'或'engines.len'或任何适当的方法名称可能是 – Brandin 2014-08-08 18:43:30

回答

19

numEngineNames怎么样?

选择变量名称比科学更具有艺术性。你想要一些不需要划分时代的东西,但要足够长才能表达。这是一个主观的平衡。

问问你自己,如果有人第一次看变量名,那么这个人是否理解它的目的是否合理?

6

它取决于变量的范围。在一个短的函数中的局部变量通常不值得一个'完美的名字',就叫它engine_count或类似的东西。通常意义很容易被发现,如果不是评论可能比两行变量名称更好。更大范围的

变量 - 即全局变量(如果他们是真的必要!),成员变量 - 恕我直言值得的名称是几乎自纪录片。当然,查看原始声明并不困难,大多数IDE会自动完成,但变量的标识符不应该没有意义(即numbercount)。

当然,这一切都很大程度上取决于您的个人编码风格和工作场所的惯例。

12

如果存在一个较短的名称,该名称同样表达变量的用途,则该名称太长。

我认为engineCount会很好。引擎名称的数量大概等于引擎的数量。

请参阅JaredPar的帖子。

1

如果它是一个函数中的局部变量,我可能会称之为n,或者可能是ne。大多数函数只包含两个或三个变量,所以不需要长名称。

+7

我不同意,它肯定取决于函数,但变量应该仍然足以描述其意义。如果它只是一个三线函数,并且n被设置为engines.Count在第一行,那么含义是显而易见的。但随着函数的增长,n的使用可能会越来越远离它的初始化方式,这个名称的含义就更少了。一般来说,我认为1和2个字符的名字应该仅用于短时间的一次性变量,比如循环变量和lambda参数。 – 2010-06-05 19:34:02

+0

@Anthony随着函数的增长,它应该被重构为更短的函数。 – 2010-06-05 19:36:17

+5

我不是在谈论延伸数百行甚至数十行的函数。但是给这个名字的含义有多难?想象一下可能需要在代码的某处查看代码的可怜的sap,并且认为可怜的sap可能是你。 – 2010-06-05 19:41:50

-2

取决于使用期限或预期用途。但是,这包括发展寿命。我最近命名了一个矢量“东西”,因为它仅用于实验。

如果一个变量只在其使用旁边声明或定义,那么我就不会打扰一个表达性的名称。如果没有,我会去找一个中等长度的名字。我永远无法理解为什么人们会使用名字,比如说10个以上的字符。像enames这样的东西将是我对你提出的问题的选择。

2

取决于上下文,如果它是一个局部变量,例如

int num = text.scan(SEARCH_ENGINE_NAME).size(); 

我会选择表达名字越短的更明确的右手。理性的是,我们处于4-5行的有限范围内,因此可以假设读者能够在短名和右手表达之间建立联系。但是,如果它是一个类的领域,我宁愿尽可能详细。

2

查看类似question

primary technical imperative是降低复杂性。应该命名变量来降低复杂性。有时这会导致名称缩短,名称缩短。它通常对应于维护人员理解代码的复杂程度有多困难。

在频谱的一端,您有循环迭代器和索引。这些可以有像i或j这样的名字,因为它们就是那么普通和简单。给他们更长的名字只会导致更多的混淆。

如果一个变量经常被使用,但代表更复杂的东西,那么你必须给它一个明确的名字,以便用户不必在每次使用它时重新学习它的含义。

另一方面是很少使用的变量。你仍然想在这里减少混淆,但给它一个简短的名字并不重要,因为重新学习变量目的的惩罚并不经常付出。

1

想想你的代码时,试着从别人的角度来看待它。这不仅有助于挑选姓名,还有助于保持代码的整体可读性。

真的很长的变量名会混淆你的代码的可读性,所以你想避免这些。但在另一方面,你想避免使用超短名称或缩略词,如“n”或“ne”。这些简短而神秘的名字会导致有人试图阅读你的代码来撕掉他们的头发。例如,通常一到两个字母变量用于小任务,例如在for循环中递增。

所以你留下的是在这两个极端之间的平衡。 “Num”是一个常用的缩写,任何半经验的程序员都会立即知道你的意思。所以像“numEngines”或“numEngineNames”这样的东西可以很好地工作。除此之外,您还可以在第一次使用变量时在代码旁边添加注释。这将让读者确切地知道你在做什么,并帮助避免任何可能的混淆。

1

我会将它命名为“search_engine_count”,因为它包含搜索引擎的计数。

0

使用Esc键 + _ + Esc键写:

this_is_a_long_variable = 42 

Esc键 + _ + Esc键_不在数学相同的字符。这就是为什么你被允许使用前者而不是后者。

+0

积分转到jVincent https://mathematica.stackexchange.com/a/31785/47875 – Miladiouss 2017-05-06 01:42:38