我应该在函数的开头或结尾添加跟踪吗



假设我们有自定义分析库来跟踪屏幕视图和用户操作。考虑以下选项。

// Option A
func buyButtonTap() {   
doSomething()
doSomethingElse()
Analytics.track(event: .buy)
}
// Option B
func buyButtonTap() {   
Analytics.track(event: .buy)
doSomething()
doSomethingElse()
}

你更喜欢哪个选项?这有关系吗?我们必须考虑以下内容:

1( 我们的应用程序和分析库都使用实时网络和数据流
2("有所作为"的过程可能既复杂又昂贵。

就我个人而言,我认为追踪应该在程序结束时进行。原因是,在资源稀缺的情况下,一开始添加跟踪会给应用程序增加一些滞后。

跟踪与主线程无关,它是一个fire forget任务。我认为你应该在后台线程中调用跟踪函数,不要担心主线程滞后。

func buyButtonTap() {
DispatchQueue.global(qos: .background).async {
Analytics.track(event: .buy)
}
doSomething()
doSomethingElse()
}

所以这取决于例如。

如果butbuttonTap((是一个处理点击操作的操作,那么你应该使用选项a

// Option A
func buyButtonTap() {   
doSomething()
doSomethingElse()
Analytics.track(event: .buy)
}

但是如果butbuttonTap((包括下订单购买物品,那么你应该在操作之前包括,因为它可能会在没有完成doSomething((和doSometingElse((的情况下崩溃。然后使用

// Option B
func buyButtonTap() {   
Analytics.track(event: .buy)
doSomething()
doSomethingElse()
}

理想的情况是将您的方法分割成小部分,并使您的结构类似于选项A,即在最后调用分析。分析通常被用作didBuy或didTapBuy

最新更新