考虑这个示例函数:
第一个例子
;;; Lisp
(defun foo (x y z)
(let ((tmp))
(setf tmp (operation1 x y z))
(setf tmp (operation2 tmp y z))
(setf tmp (operation3 tmp y z))
(setf tmp (operation4 tmp y z))
...
(setf tmp (operationN tmp y z))
tmp))
// PHP
function foo($x, $y, $z)
{
$tmp = operation1($x, $y, $z);
$tmp = operation2($tmp, $y, $z);
$tmp = operation3($tmp, $y, $z);
...
return operationN($tmp, $y, $z);
}
我的老师告诉我,在函数式编程中,我不应该将返回值存储在 temp 变量中,而是立即将其传递给下一个函数。
第二个例子
;;; Lisp
(defun foo (x)
(operationN
(...
(operation3
(operation2
(operation1 x y z)
y z)
y z)
y z)
y z)
)
// PHP
function foo($x, $y, $z)
{
return operationN(
...(
operation3(
operation2(
operation1($x, $y, $z),
$y, $z),
$y, $z),
$y, $z),
$y, $z);
}
将此视为一个非常简单的示例,并且可能有其他函数应用于其余参数。在我看来,第一个例子更具可读性。
- 以函数式编程方式格式化此代码的正确方法是什么?
- 编程时我应该更喜欢代码可读性还是正确的代码语法(应该取决于深度级别)?