【发布时间】:2015-12-26 09:56:00
【问题描述】:
我有一行可怕的代码,它是一个巨大的 PITA,可以反复输入和阅读。我试图用我班级中一个漂亮、整洁的 BOOL 属性和相应的方法来替换它,但它是“flakey”(而且它不会崩溃)。我想用更整洁的东西来代替这个可怕的怪物。这是我到目前为止所做的。
这是可行的...
if (self.stretchSideMultiplierCount < [[[NSUserDefaults standardUserDefaults]valueForKey:@"stretchMultiplier"]integerValue] * self.currentStretch.sideMultiplier.integerValue) {
// blah blah blah
}
...但它看起来很可怕,所以我试图通过在实现中创建一个 BOOL 属性来摆脱它:
@property (nonatomic, assign) BOOL lastRoundOfCurrentStretch;
...以及下面的方法...
- (BOOL) lastRoundOfCurrentStretch {
if (self.currentStretch.sideMultiplier.intValue * [[[NSUserDefaults standardUserDefaults]valueForKey:@"defaultStretchRepetition"]intValue] == self.stretchSideMultiplierCount) {
NSLog(@"** LAST ROUND **");
return YES;
} else {
return NO;
}
}
完成后,我希望能够使用此 BOOL 作为在查询顶部键入可怕的代码行的替代方法。
if (self.lastRoundOfCurrentStretch == NO) {
// blah blah blah
}
在我进行更改后,该课程并没有像“过去”那样工作,但它并没有崩溃。我敢肯定这归结为我这方面令人吃惊的愚蠢的用户错误,但我很快就会在这里找到答案。这与我得到的答案一样接近,适用于我正在尝试做的事情。
【问题讨论】:
-
如果您要删除难以阅读的内容,首先尝试在每一行上只执行一个操作。取值、乘法和比较 = 三个操作。使用变量将长行拆分为较小的操作。另外,永远不要与
NO比较,使用逻辑运算(if (!self.lastRoundOfCurrentStretch) {)。
标签: ios objective-c if-statement boolean