【问题标题】:How to name bools that hold the return value of IsFoo() functions?如何命名保存 IsFoo() 函数返回值的布尔值?
【发布时间】:2015-01-15 10:47:55
【问题描述】:

我读到将返回布尔值的函数命名为 IsChecksumCorrect(Packet) 是一个很好的约定,但我也读到将布尔变量命名为 IsAvailable = True 之类的函数是一个很好的约定

但是这两条规则不兼容:我不会写:

IsChecksumCorrect = IsChecksumCorrect(Packet)

那么,为存储此类函数返回的布尔值的变量命名的最佳方法是什么?

PS:如果你能想到一种不依赖于改变大小写的方法(某些语言——如 Delphi——不区分大小写),则加分。

【问题讨论】:

  • 这不适合 SO.com,但为什么不直接从变量名中删除 Is 呢?然后随后的if(ChecksumCorrect) 显示为“自然”。
  • @rubenvb 这是个好建议,谢谢。但我认为这对 SO 来说是个坏问题;这里有类似的问题,已经成功但尚未结束:#1#2#3
  • 老问题不适合新问题。这完全符合“主要基于意见”的密切原因,因为它将取决于许多个性化和固执己见的因素。如果您尝试遵守一些外部建立的约定(例如,标准库、Qt 或您希望从中采用编码风格的其他大型框架),那么这个问题会更合适。但是,嘿,这只是我的意见,我的意思是对你没有恶意:-)
  • 将“Is”移动到名称的中间,这样问题“IsChecksumCorrect”就变成了一个陈述/答案“checksumIsCorrect”,它可能是真或假
  • @vlad_tepesch 多么棒的建议;到目前为止,我将采用这个。谢谢

标签: coding-style boolean naming-conventions


【解决方案1】:

首先,只有不需要参数的函数才有困难,在你的例子中,变量应该被称为IsPacketChecksumCorrect

即使是没有参数的函数,我认为如果你只是缓存函数的结果,为了性能起见,你只会遇到问题,如果不是,你可以安全地用函数调用替换所有变量实例' t 为性能。在所有其他情况下,我认为您总是可以为变量想出一个更具体的名称。

如果您确实只是在缓存,为什么不直接调用变量Functionname_cache?对我来说似乎很清楚。

如果您需要在您的项目中大量使用这种“技术”并且 _cache 看起来太长或者您不喜欢它,那么您可以自行制定一个约定;只要您始终如一,您就可以采用最适合您的任何方法,该项目的新手只需向该约定解释一次,然后他们就会很容易地认出它。


顺便说一下,对于布尔值的命名约定,有各种不同的意见。就我个人而言,我更喜欢把主题放在第一位,这使得 Ifs 更具可读性,例如ChecksumIsCorrectChecksumCorrectChecksumCorrectness。我实际上不想把 Is 放在一起,即使你省略它,这个名字通常也很清楚。

【讨论】:

  • 嗯,我从未见过或听说过任何具有Functionname_cache 的代码。从这个意义上说,大多数存储函数返回的变量都是缓存。如果我要在任何地方进行函数调用,它的可读性将低于一个命名良好的变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-05
  • 2021-10-29
  • 2013-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多