不要在一个表达式中包含太多
- 为计算单元找到有意义的名称。
- 使用
for
comprehensions 或map
将计算组合在一起。
假设你有这样的事情:
if (userAuthorized.nonEmtpy) {
makeRequest().map {
case Success(respone) =>
someProcessing(..)
if (resendToUser) {
sendToUser(...)
}
...
}
}
如果你的所有函数都返回 Either
或类似 Validation
类型,你可以写:
for {
user <- authorizeUser
response <- requestToThirdParty(user)
_ <- someProcessing(...)
} {
sendToUser
}