gpt4 book ai didi

objective-c - 检查后立即设置一个 BOOL

转载 作者:太空狗 更新时间:2023-10-30 03:58:52 24 4
gpt4 key购买 nike

我正在研究别人的代码库,其中有几行是这样的:

if (self.aBooleanProperty) {
self.aBooleanProperty = YES;
// Do some stuff
}

检查后是否有任何指向将其设置为YES?我在这里遗漏了什么吗?

最佳答案

if (self.aBooleanProperty) {
self.aBooleanProperty = YES;
// Do some stuff
}

在正确编写的代码中,您不会遗漏任何内容,并且该 setter 行将可计费的代码行增加了一个空操作。

不过,有两个原因可能导致误入歧途。

正如@HotLicks 所说,可能 setter 有副作用,可能 需要被触发。但它们应该在场景中被触发,除非开发人员错误地认为直接在所有地方设置 ivar,然后使用上面的方法将设置成本合并到一个位置。但那将是一件非常脆弱和愚蠢的事情。

另一个原因是,传统上,Objective-C 的 BOOL 是美化的 char。只是它没有那么荣耀。因此,将 BOOL 与 YES 进行比较实际上是危险的,因为 YES 具有明确的值。

BOOL mmmmmK = 2;  // this is valid

if (mmmmmK == YES) { /* this won't execute */ }

有点像爬悬崖时有东西掉下来,你不会喊“瓶子”、“鞋子”、“鹅卵石”或“假肢”,但你总是喊ROCK .

因此,可能开发人员正在考虑使用明确的 YES 规范化肯定句。同样,非常值得怀疑,即使是这种情况,也应该引起对代码库其余部分质量的怀疑。

哎呀。

关于objective-c - 检查后立即设置一个 BOOL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16397388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com