文章链接

作者提出了两个编程的技巧,我觉得非常有用。

1. 将判断提前到调用的地方使用

比如先在一个函数中进行判断,在判断之后调用另一个函数,然后另一个函数中又有一个判断,那么可以直接把这两个判断都提到外部调用的地方,让这两个函数都变成纯执行的函数

//修改前
fn g() {
if foo && bar {
h()
}
}
fn h() {
if foo {
} else {
}
}
//修改后
fn f() {
if foo && bar {
if foo {
} else {
}
}
}

2. 将循环中的判断提到循环之前,这样可以免去冗余的循环

// GOOD
if condition {
for walrus in walruses {
walrus.frobnicate()
}
} else {
for walrus in walruses {
walrus.transmogrify()
}
}
// BAD
for walrus in walruses {
if condition {
walrus.frobnicate()
} else {
walrus.transmogrify()
}
}

对于多个数据和单个数据的处理,可以默认按照多个数据来处理,单个数据转为单个元素的数组,这样可以省去每个数据去获取资源的操作

// GOOD
frobnicate_batch(walruses)
// BAD
for walrus in walruses {
frobnicate(walrus)
}