Re: [请益] 比物件导向更先进的程式设计思想?

楼主: wulouise (在线上!=在电脑前)   2020-10-18 16:15:30
在讨论oop fp 或任何概念之前
需要讨论的是你的使用情境(context)
没有context就只是在讨论信仰
一开始没有讨论context,所以后面讨论一定是到处互打,大家都觉得自己对
所以回这篇文的时候麻烦先描述想讨论的context
为什么需要设计概念?
通常不外乎两件事情
1. 降低维护成本
2. 降低开发成本
通常的情境你需要的是1+2的最小值
但是很多情景有人只看2让1一直增加
假如是demo,只需要2,不然通常要1
然后再来看两个概念之间的差异
Functional programming
用什么方式降低开发与维护成本
1. Avoid state
2. Using immutable data.
所以维护成本其实不容易爆炸,因为你的unit test就是规格的全部
reuse 就是拿这个function reuse.
而且理解难度相对低
Object oriented programming
采用以下方式降低开发维护成本
1. SOLID
2. Design Pattern
如果遇到必要的复杂设计 design patter可以降低沟通成本 (通常会增加维护成本)
3. Inheritance
4. Polymorphism
5. KISS
6. [Insert any you want to add]
OOP最大的问题就是他太容易变得很复杂
不管是高手写得或是新手写得,复杂度都可以不小心膨胀很多
各种principles & patterns 更是火上加油
造成各种over generalized design
不小心就被过去的历史backfired
举个最常听到的,有谁用global singleton然后可以很好地refactor?
有好解法麻烦分享一下
所以OOP最重要的原则我觉得是KISS (不论context)
Keep it stupid simple
啊对,KISS是我的信仰,所以不开放回文战,不用浪费各位时间
FP跟OOP不是互斥关系
两者在特定context都有表现好的地方
选择适合的方式才是重点
作者: jej (晃奶大馬桶)   2020-10-18 16:21:00
DevOps两项都要注重 很难权衡取其一
作者: dream1124 (全新开始)   2020-10-18 19:31:00
推不过我觉得FP并非没有你批评OOP过度复杂的问题现在前端给我的感觉是不管是否真的复杂都在用状态框架是否真的好维护还是跟设计者的功力密切相关
作者: es8603 (绯色之翼)   2020-10-18 21:15:00
推这篇
作者: strlen (strlen)   2020-10-18 21:32:00
重点根本不在模式 重点在人 就算FB 也是能写到超难懂
作者: dream1124 (全新开始)   2020-10-20 09:52:00
对啦,本就该并存,状态用OOP管,程序用FP管
作者: electgpro (Ray(甫))   2020-10-21 07:53:00
写 pure FP 也可以管理状态呀~
作者: qscesz1456 (soloud)   2020-10-22 19:19:00
写到后来发现真的keep simple就好
作者: jej (晃奶大馬桶)   2020-10-22 19:21:00
对stupid就交给别人了
作者: MangoTW (不在线上)   2020-10-23 21:46:00
推这篇 没有一样作法可以打全部的 说有的真的是战信仰

Links booklink

Contact Us: admin [ a t ] ucptt.com