面向对象 vs 函数式

  • 函数式是可变数据和不可变数据分开的。
  • 函数式是可执行和不可执行分开的。
  • 函数式是不变的,面向对象是多变的。
  • 不可变的好处
    • 函数式更明确,就像unix的命令一样。屏蔽了实现。函数式就像unix命令一样让人熟悉。
    • 不可变,大家的交流语言就是统一的。
    • 面向对象方便更改也增加了复杂程度。因为要面对多个对象。
  • 可变的好处
    • 面向对象则是多变的。可以适应复杂的情况。方便进行更改。
    • 面向对象对命名的负担清。
    • 函数内部引用参数则比较繁琐,直接引用,需要写结构名,如果想简化,就要重新赋值。
  • 高级与底层
    • 面向对象更高级,更符合人的思维。
    • 函数式更底层,更有执行效率。
  • 适用
    • 面向对象适合写只用在一个地方的东西。
    • 函数式适合写大家都用的东西。
  • 互通
    • 函数式可以用结构数据类型来模拟面向对象。
    • 函数通过可选项来保持变化。
    • 函数式是必须要有一个参数,面向对象是必须要有一个对象。
  • 顺便说
    • 王垠:链表比数组的消耗大。
    • 动态语言就是可重载、数据可变、不区分执行和非执行,也就是和面向对象特征相似。
    • c语言之上的编程语言,为了适应c语言,都函数式特征明显,都排斥面向对象。
This entry was posted in Uncategorized. Bookmark the permalink.