作者wulouise (在线上!=在电脑前)
看板Soft_Job
标题Re: [请益] 比物件导向更先进的程式设计思想?
时间Sun Oct 18 16:15:30 2020
在讨论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都有表现好的地方
选择适合的方式才是重点
-----
Sent from JPTT on my Google Pixel 4.
--
等等,我是不知道你是看了什麽神枪手的故事,可是为什麽要拿我当靶 (′Д‵)
什麽!是黄忠和后羿的故事?他们拿的不是铳,是弓!
长门,你手上拿着苹果跟绳子是作什麽?今天晚餐不是关东煮是烤乳猪吗?
连爸爸都没弄痛过我,可不可以不要绑这麽紧,好歹松一点让我有空间逃吧,古泉。
好,我认了,要射就射吧,可是请听一下在我死前的最後一个愿望。
不 要 拿 霰 弹 来.....噗滋(脑浆声) 摘自「阿虚的最後一餐」
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.136.220.193 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1603008934.A.569.html
※ 编辑: wulouise (223.136.220.193 台湾), 10/18/2020 16:16:54
1F:→ jej: DevOps两项都要注重 很难权衡取其一 10/18 16:21
2F:推 dream1124: 推 10/18 19:31
3F:→ dream1124: 不过我觉得FP并非没有你批评OOP过度复杂的问题 10/18 19:53
4F:→ dream1124: 现在前端给我的感觉是不管是否真的复杂都在用状态框架 10/18 19:54
5F:→ dream1124: 是否真的好维护还是跟设计者的功力密切相关 10/18 19:55
FP不复杂的前提是他没有state
但是正常的设计通常有state,然後就出现长得像FP的东西
每次执行结果都不一样XD
6F:推 es8603: 推这篇 10/18 21:15
7F:→ strlen: 重点根本不在模式 重点在人 就算FB 也是能写到超难懂 10/18 21:32
FP跟OOP本来就该是并存的,只是OOP比较容易写烂XD
※ 编辑: wulouise (114.44.72.189 台湾), 10/19/2020 20:48:52
8F:→ strlen: 「比较容易」写烂??你太小看那些工程师了XDDDDDD 10/19 23:26
9F:推 dream1124: 对啦,本就该并存,状态用OOP管,程序用FP管 10/20 09:52
10F:→ electgpro: 写 pure FP 也可以管理状态呀~ 10/21 07:53
11F:推 qscesz1456: 写到後来发现真的keep simple就好 10/22 19:19
12F:→ jej: 对stupid就交给别人了 10/22 19:21
13F:推 MangoTW: 推这篇 没有一样作法可以打全部的 说有的真的是战信仰 10/23 21:46