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

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

我能想到的唯一像样的名字是“ inFront”,但我认为这个名字描述得不够清楚。

另一个选择是“ isNotLast”。但这并不是一个好的做法(代码完成,第269页,使用正的布尔变量名)。

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

120280 次浏览
isBeforeTheLastItem


isInFrontOfTheLastItem


isTowardsTheFrontOfTheList

也许太罗嗦了,但它们可能会给你提供一些想法。

HasFollowingItems? 或者 hasFollowingXXXXs,其中 XXXX 是你列表中的任何项目?

就个人而言,我更愿意改变逻辑,或者查看业务规则,看看它们是否规定了任何潜在的命名。

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

这个怎么样:

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

尽管我认为即使你不应该养成制止“规则”的习惯,有时候完成某事的最好方法可能是对规则(代码完成指南)做一个例外,在你的情况下,命名为变量 < em > isNotLast

Haskell 使用 init来引用列表中除最后一个元素以外的所有元素(基本上是 tail的倒数) ; isInInit会起作用吗,还是它太不透明了?

是半数还是半数

就是前世

有两个问题需要考虑

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

  2. 我认为在处理这个变量的方式中存在着内在的冲突。一方面你说“ false when a object is the last in a list”,另一方面你也想称它为“ inFront”。在列表中最后一个(不)的对象在我看来不是(不)在前面。这是最后一个。

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

我同意代码完成(使用正布尔变量名) ,我也相信规则是用来打破的。关键是只有在必要的时候才能打破它们。在这种情况下,没有一个替代名称像“打破”规则的名称那样清楚。所以现在这种情况下,违反规则也是可以接受的。

一个简单的语义名称是 last。这将允许代码总是积极的代码,如:

if (item.last)
...


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