Coding style 如何命名保存IsFoo()函数返回值的布尔?

Coding style 如何命名保存IsFoo()函数返回值的布尔?,coding-style,boolean,naming-conventions,Coding Style,Boolean,Naming Conventions,我读到命名返回bool(如IsChecksumCorrectPacket)的函数是一个很好的约定,但我也读到命名布尔变量(如IsAvailable=True)是一个很好的约定 但这两条规则是不相容的:我不会写: IsChecksumCorrect = IsChecksumCorrect(Packet) 那么,命名存储这些函数返回的布尔值的变量的最佳方法是什么呢 PS:如果你能想出一种不依赖于改变大小写的方法,那就有额外的要点。有些语言,如Delphi,是不区分大小写的。首先,只有不需要参数的函

我读到命名返回bool(如IsChecksumCorrectPacket)的函数是一个很好的约定,但我也读到命名布尔变量(如IsAvailable=True)是一个很好的约定

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

IsChecksumCorrect = IsChecksumCorrect(Packet)
那么,命名存储这些函数返回的布尔值的变量的最佳方法是什么呢


PS:如果你能想出一种不依赖于改变大小写的方法,那就有额外的要点。有些语言,如Delphi,是不区分大小写的。

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

即使对于没有参数的函数,我认为只有在缓存函数的结果时才会出现问题,这是出于性能考虑,如果不是出于性能考虑,您可以安全地用函数调用替换所有变量实例。在所有其他情况下,我认为您总是可以为变量提供更具体的名称

如果您确实只是缓存,为什么不直接调用变量Functionname\u cache呢?我似乎很清楚

如果你需要在你的项目中大量使用这种技术,而缓存看起来太长或者你不喜欢它,你可以选择自己的惯例;只要你始终如一,你就可以采用最适合你的方式,新加入项目的人只需要向他们解释一下惯例,他们就会很容易地认识到它


顺便说一句,对于布尔人的命名惯例有各种不同的看法。就我个人而言,我更喜欢将主题放在第一位,这使Ifs更具可读性,例如ChecksumIsCorrect、ChecksumCorrect或CheckSumCorrection。实际上,我不想把Is全部放在一起,即使省略它,名称通常也会保持清晰。

这不适合SO.com,但为什么不从变量名中删除Is呢?然后,随后的ifChecksumCorrect将显示为“自然”。@rubenvb这是一个很好的建议,谢谢。但我认为这是一个糟糕的问题;这里有一些类似的问题是成功的,但还没有解决:旧问题不能使新问题变好。这完全符合主要基于观点的封闭理性,因为它将取决于许多个性化和固执己见的因素。如果您试图遵守一些外部建立的惯例,例如标准库、Qt或其他您想要采用的编码风格的大框架,那么这个问题将更合适。但是,嘿,不管怎样,这只是我的观点,我对你没有恶意:-。把Is移到名字中间,这样问题IsChecksumCorrect就变成了陈述/回答checksumIsCorrect,可能是真的,也可能是真的false@vlad_tepesch多好的建议啊;到目前为止,我将采用这个。谢谢,嗯,我从未见过或听说过任何有Functionname\u缓存的代码。从这个意义上讲,大多数存储函数返回内容的变量都是缓存;如果我在任何地方调用函数,它的可读性将不如一个命名良好的变量。