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

Ber*_*yan 57 coding-style naming-conventions

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

我能想出的唯一合适的名字是"inFront",但我认为这不足以描述.

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

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

Bel*_*ela 61

isBeforeTheLastItem

isInFrontOfTheLastItem

isTowardsTheFrontOfTheList
Run Code Online (Sandbox Code Playgroud)

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

  • 如果有_after_"Last"元素,那为什么称它为"Last"? (29认同)
  • 不能用`!isLast`替换`isBeforeLast`吗? (12认同)
  • 我想我卖的是'isBeforeLast'......呃 (5认同)
  • @Thunder - `shouldDisplay` (2认同)
  • 在复数情况下如何?应该以“are”开头吗?例如`areAnimalsAllowed`?万一被占有?它应该以“has/have”开头吗?例如`hasAnimals`? (2认同)
  • 我使用了混合前缀来解决 @maurice 提出的问题。它们采用简短的单词来区分布尔值(或返回布尔值的函数)与其他变量。这些前缀的形式为“is”、“can”、“has”、“was”;但当然不限于它们。示例:“isVisible”、“hasRecords”、“wasDrawnToScreen”、“canAccessPage”。执行最终是一场斗争,因为这些规则是作者的选择,因为目标是为了清晰和可读,而这通常是主观的。 (2认同)

Jef*_*ver 32

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

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


mar*_*lam 16

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

  • 我正在思考这些问题.hasNext可能有效. (3认同)

Mit*_*ers 13

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

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

  • +1.如果我没记错的话,这也是Code Complete中该部分的精神. (2认同)