我经常发现自己像这样“内而外”地编写代码
doOtherWork(doWork(someObject))
这段代码的读法类似于“处理获取someObject结果的结果”
如果我可以编写为左右可读的代码,代码似乎会更清晰
someObject.map(doWork).map(doOtherWork)
此代码的读法类似于“将someObject发送到函数,然后使用另一个函数处理结果”
我发现自己正在编写函数
def applyFunction[T, U](someObject: T)(f: T => U): U = {
f(someObject)
}
def doWork(x: Int): Int = {
x * x
}
def doOtherWork(y: Int): Int = {
y * 2
}
val z: Int = 5
applyFunction(z) {
result2 => doOtherWork(applyFunction(result2) {
result => doWork(result)
})
}
这使每个操作都更加清晰,但仍然存在“由内而外”的问题。
我经常做的另一件事是将每个操作的结果保存在val中,然后将其传递给下一行的函数。这似乎是重复的。
关于以可读方式处理函数结果的任何建议吗?