Functional programming (FP) 使用了接近一年的时间,又有了很多新的想法。这里主要说说问题。
最大的问题就是效率问题。
如果使用基于类的方法,通过继承,我们可以很快的修改一些功能,产品可以快速上线。
但是使用函数式编程则很难解决这个问题。
例如:
class Cat(object):
def sleep(self):
# ...
self.close_eye()
# ...
def close_eye(self):
print("slow eye closed")
如果想要调整 close_eye
的逻辑,那么直接修改 close_eye
即可。
例如
class SmartCat(object):
def sleep(self):
# ...
self.close_eye()
# ...
def close_eye(self):
print("fast close")
相比之下,函数式编程可能是这样
def sleep():
close_eye()
def close_eye():
print('eye closed')
如果要修改close_eye
,则需要首先修改sleep
def sleep(close_eye=close_eye):
# ...
close_eye()
# ...
这样 sleep 接受 close_eye
作为参数,原本的函数作为默认值。
调用改为
def fast_close_eye():
print('fast close')
sleep(close_eye=fast_close_eye)
这里比较麻烦的是,违反了开闭原则。我们不得不修改之前的代码,还要考虑之前代码的可维护性。
因此,我认为在这个场景,FP 不太合适。