FP Problem.md

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 不太合适。


也可以看看