我需要一个好的变量名来表示当对象是列表中的最后一个时返回false的布尔值。
我能想到的唯一合适的名称是‘inFront’,但我认为这不够描述清楚。
另一个选择是'isNotLast'。但这不是良好的编程实践(《代码大全》269页,使用正向的布尔变量名)。
我知道我可以改变变量定义,使得当对象是最后一个时返回true,并将变量命名为“isLast”,但如果有第一个解释会更容易完成这个任务。
我需要一个好的变量名来表示当对象是列表中的最后一个时返回false的布尔值。
我能想到的唯一合适的名称是‘inFront’,但我认为这不够描述清楚。
另一个选择是'isNotLast'。但这不是良好的编程实践(《代码大全》269页,使用正向的布尔变量名)。
我知道我可以改变变量定义,使得当对象是最后一个时返回true,并将变量命名为“isLast”,但如果有第一个解释会更容易完成这个任务。
isBeforeTheLastItem
isInFrontOfTheLastItem
isTowardsTheFrontOfTheList
也许有点啰嗦,但它们可能会帮助您得到一些想法。
shouldDisplay
- nickiaconisareAnimalsAllowed
?所有名词复数形式通常以“are”开头。因此,在复数情况下,建议将变量或属性命名为 areAnimalsAllowed
。至于所有格形式,应该以“has / have”开头吗?例如 hasAnimals
?在所有格形式中,建议使用“have”开头,例如 haveAnimals
,表示拥有某些动物。 - dpelisek如果可以的话,我会建议将其命名为IsLast并改变功能。如果这真的不是一个选项,我会将其命名为IsNotLast。
我同意《代码大全》(使用肯定的布尔变量名称)的观点,我也相信规则是为了被打破而存在的。关键是只有在必须打破它们时才这样做。在这种情况下,没有任何替代名称比违反规则的名称更清晰。所以这是一个例外,违反规则可能是可以接受的。
if (isLast) {…}
或者如果需要反转 (我更喜欢保持肯定的名称) if (!isLast) {…}
- Breaker222是否有后续的项目?或者列表中的每个项目都有对应的后续XXXX?其中XXXX指的是您列表中的项。
个人而言,我会更改逻辑或查看业务规则,以确定它们是否决定了任何潜在的命名。
由于实际切换布尔值的条件实际上是“最后一个”操作。我认为切换逻辑并将其命名为“IsLastItem”或类似名称将是一种更受欢迎的方法。
isPenultimateOrPrior
isBeforeEnd
last
。这将允许代码始终使用正面代码,例如:if (item.last)
...
do {
...
} until (item.last);
hasSiblings
or isFollowedBySiblings (or isFolloedByItems, or isFollowedByOtherItems etc.)
or moreItems
尽管我认为你不应该养成违反“规则”的习惯,但有时候实现某些目标可能需要例外(参考Code Complete指南),在你的情况下,可以将变量命名为isNotLast。
init
来表示一个列表中除了最后一个元素以外的所有元素(基本上是tail
的相反操作); isInInit
可行吗,还是太晦涩难懂?end
来表示最后一个项目。 - wander95需要考虑的两个问题
变量的作用域是什么(换句话说:你是在谈论局部变量还是字段?)? 局部变量的作用域比字段更窄。特别是,如果变量在一个相对较短的方法中使用,我不会太关心它的名称。当作用域很大时,命名更重要。
我认为你处理这个变量的方式存在内在的冲突。一方面,你说“当对象是列表中的最后一个时为false”,而另一方面,你也想称之为“inFront”。在列表中(不)是最后一个对象并不意味着(不)在前面。因此,我会选择isLast。
bool
吗? - Ben Racicot