命名约定:如何命名布尔变量?

时间:2009-08-04 14:57:29

标签: coding-style naming-conventions

我需要一个好的变量名称作为一个布尔值,当一个对象是列表中的最后一个时,它返回false。

我能想出的唯一合适的名字是“inFront”,但我认为这不够具有描述性。

另一个选择是'isNotLast'。这不是一个好习惯(代码完成,第269页,使用正布尔变量名)。

我知道我可以更改变量定义。当一个对象是最后一个并且调用变量'isLast'时返回true,但是,如果我有第一个解释,它将使这个任务更容易。

12 个答案:

答案 0 :(得分:52)

isBeforeTheLastItem

isInFrontOfTheLastItem

isTowardsTheFrontOfTheList

也许太罗嗦,但他们可能会帮助你提出想法。

答案 1 :(得分:32)

我的投票是将其命名为IsLast并更改功能。如果这不是一个真正的选择,我会将名称保留为IsNotLast。

我同意Code Complete(使用正布尔变量名称),我也相信规则会被破坏。关键是只有当你绝对不得不打破它们时才能打破它们。在这种情况下,没有其他替代名称与“破坏”规则的名称一样清晰。所以这是违反规则的时候之一。

答案 2 :(得分:17)

hasFollowingItems?或者hasFollowingXXXXs,其中XXXX是列表中的项目是什么?

答案 3 :(得分:13)

就个人而言,我会更改逻辑,或者查看业务规则,看看他们是否会指定任何潜在的命名。

因为,切换布尔值的实际条件实际上是“最后”的行为。我会说切换逻辑,并将其命名为“IsLastItem”或类似方法将是更优选的方法。

答案 4 :(得分:4)

isPenultimateOrPrior

isBeforeEnd

答案 5 :(得分:2)

Haskell使用init来引用除列表的最后一个元素之外的所有元素(基本上是tail的反转);会isInInit工作,还是太不透明?

答案 6 :(得分:2)

一个简单的语义名称是last。这将允许代码始终为正代码,如:

if (item.last)
    ...

do {
   ...
} until (item.last);

答案 7 :(得分:1)

怎么样:

 hasSiblings
 or isFollowedBySiblings (or isFolloedByItems, or isFollowedByOtherItems etc.)
 or moreItems

虽然我认为即使你不应该制定制定“规则”的习惯,但有时最好的方法是制定例外规则(代码完整指南),在你的情况下,名称变量 isNotLast

答案 8 :(得分:0)

我会调用变量beforeLast

答案 9 :(得分:0)

要考虑的两个问题

  1. 变量的范围是什么(换句话说:您是在谈论局部变量还是字段?)? 与字段相比,局部变量的范围更窄。特别是,如果变量在一个相对较短的方法中使用,我不会太在意它的名字。当范围很大时,命名更重要。

  2. 我认为你对待这个变量的方式存在固有的冲突。一方面你说“当一个对象是列表中的最后一个时为假”,另一方面你也想把它称为“inFront”。列表中(不)最后一个对象不会打击我(不)inFront。我会选择isLast。

答案 10 :(得分:0)

  
    

我需要一个好的变量名来表示返回false的布尔值     当对象是列表中的最后一个对象时。

  

根据最新的PEP 8 Style Guide for Python Code,变量名称“应小写,必要时用下划线分隔单词,以提高可读性。” 因此,您应该为变量命名,例如

NSManagedObject

其他编程语言对变量(例如firstName,lastName)使用lowerCamelCase样式。但是,Python更喜欢underscore_separated样式。

答案 11 :(得分:-4)

我会选择isUnlast。

它简短,精辟,完美地描述了这种情况!