fp为了保证func的复用,尽量抹杀object的存在
因为class/object这种东西是特殊的数据结构
会导致func跟这种特殊的结构绑定
就很难复用,比如go(USACity la)和go(ChineseCity gz)
是不一样的,因为参数的结构不一样,这就限制了其复用
所以最后fp为了能够重用,写的func参数都是map, list,sring,int这些
而map&list注定对于一个object描述的力度是有限的
限制少木有错,但是就容易包含有各种错误等等
所以为了让func独立出去,稳定其1st class的地位
注定要削弱class/object的存在感
而oop则反过来,提倡并鼓励使用class/object
像java这种,则强迫func寄托在object下面
虽然你也可以定义全局的Util,但是毕竟static方法是很少滴
object才是1st class的地位,这样做的好处就是
不依赖func,而依赖每个object自身
每个class自己有啥问题,自己搞定,当然会有各种搞不定
搞不定没关系,异常catch住,然后收拾掉就好
不要影响其他object就行,当然这样做的结果就是
如果object无法重用,则下面的func都无法重用
所以要重用的话,必需先让object有办法重用起来
当然这么看,也可以说这两个不冲突
把fp想成是制作一堆巨大的static方法
其他的oop该怎么做还是怎么做
不过一般而言,static部分是可以托管的
spring就是其中一种托管办法,顺手抄个轮子就好了
没有必要自己去折腾,也木有时间,自己写还要维护,麻烦
所以用scala写类库,定义dsl,然后包装成jars丢出去
其他人用java就可以直接调用这些jars,是非常合理的
能解释为啥spark等用scala写