gpt4 book ai didi

ios - 这是一个好的编程习惯吗? if 条件是返回带有回调的 bool 的方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:17 25 4
gpt4 key购买 nike

我正在使用 Objective-C 来回答这个问题,但这并不是真正特定于语言的。

我的用户类中有以下方法,

+(BOOL)canPerform:(NSString *)string
withCompletion:(void(^)(BOOL success,NSError *error))block;

在我的 ViewController 中

-(void)performTask{

if([User canPerform:@"My String" withCompletion:^(BOOL success, NSError *error) {
if (success) {
NSLog(@"Task success!");

}
else{
NSLog(@"Task Failed with error : %@,error.localizedDescription");
}
}])
{
NSLog(@"Can perform task");

}
else{
NSLog(@"Can not perform task");

}
}

我正在执行的任务无需赘述。这不是我的问题。

我的问题是:

  1. 这是一个好的编程习惯吗?使用接受 block 的 BOOL 方法作为 if 语句的条件?

  2. 此方法 [User canPerform] 做了两件事。首先,它检查它是否可以执行此特定任务,如果可以,它会执行该任务。但是方法名称并没有反射(reflect)这一点。方法名称是 canPeform。我可以使用 ifCanThenPeformThisTask 但这听起来很奇怪而且感觉不像是 BOOL 方法。命名此方法的最佳方法是什么?

最佳答案

它可以更好。该方法的名称具有误导性,并且由于括号的数量和到处嵌套,代码难以阅读。像这样会更好:

+(BOOL)checkAndPerform:(NSString *)string
withCompletion:(void(^)(BOOL success,NSError *error))block;

并用作:

-(void)performTask {
BOOL available = [User checkAndPerform:@"My String" withCompletion:^(BOOL success, NSError *error) {
if (success) {
NSLog(@"Task success!");
} else {
NSLog(@"Task Failed with error : %@,error.localizedDescription");
}
}];

if(available)
{
NSLog(@"Can perform task");
} else {
NSLog(@"Can not perform task");
}
}

现在很清楚,我们正在检查潜力和执行(如果可用),并且它根据执行的可用性明确地将操作与结果操作分开。

关于ios - 这是一个好的编程习惯吗? if 条件是返回带有回调的 bool 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32905244/

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