命名约定:什么命名布尔variables?

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

我能拿出来的唯一体面的名字是“inFront”,但是我不认为这是足够描述的。

另一个select将是'isNotLast'。 尽pipe如此(代码完成,第269页,使用正布尔variables名称),这并不是一个好习惯。

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

 isBeforeTheLastItem isInFrontOfTheLastItem isTowardsTheFrontOfTheList 

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

我的投票将命名为IsLast并更改function。 如果这不是一个真正的select,我会留下IsNotLast的名字。

我同意代码完整(使用正布尔variables名称),我也相信规则被打破。 关键是要打破他们,只有当你绝对不得不。 在这种情况下,没有任何替代名称与“打破”规则的名称一样清晰。 所以这是打破规则的时代之一。

hasFollowingItems? 或已经从XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

因为切换布尔值的实际情况实际上是“最后”的行为。 我会说,切换逻辑,并命名为“IsLastItem”或类似将是一个更好的方法。

isPenultimateOrPrior

isBeforeEnd

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

怎么样:

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

尽pipe我认为即使你不应该习惯于制定“规则”,有时候完成某件事情的最好办法也许是规定一个例外(Code Complete准则),在你的情况下,把variables命名为NotLast

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

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

我会在最后调用variables。

有两个问题需要考虑

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

  2. 我认为你对待这个variables的方式有一个固有的冲突。 一方面,当一个对象是列表中的最后一个时,你会说“false”,另一方面,你也可以称之为“inFront”。 (不)在列表中的最后一个对象不会引起我(不)inFront。 这我会去isLast。

我会去isUnlast。

短小精悍,完美描述情况!