作者tofuflower (无)
看板Soft_Job
标题Re: [讨论] 效能与易维护性的取舍?
时间Sun Jan 21 19:55:22 2018
这问题很有趣,我一直在问自己一个软体系统最重要的是什麽?
以下是我目前给自己的答案,分享出来跟各位版有讨论一下。
我觉得效能和可维护性都不重要,重要的是这两者带来的价值。
对大部分工程师而言,价值就是能帮股东赚到的钱或省掉的成本。
举个简单的例子来说:如果公司营收停滞的原因是因为产品效能太差,那效能就有价值。
反之,若停滞的原因是因为新功能开发赶不上用户需求,可维护性才是价值所在。
我认为所有的技术取舍的关键之一是风险管理,
你得到好处,并让你付出的代价在你可承担的范围内。
假设效能和程式可维护性真的只能二择一:
选择效能,我可以用更少的资源做到更多的事,但代价是後续程式不好修改。
在资源有限的情境,选择效能可以带来更多的价值;
因此在撰写监控软体,Log Aggregation 之类必然不能占用太多资源的系统,
我会优先选择效能;而针对系统可维护性的问题,我会写一份好维护的测试,
让後续即使有需求异动或架构异动也有一个测试把关。
选择可维护性,我可以得到一份好改的 code,付出的代价是效能相对低下。
在需求易变动的情境,一份好维护的专案不仅仅代表新进人员可以很快进入状况,
还代表你可以让你的专案功能马上对应市场需求做出变动。
(你永远不知道行销部的天才们会提出什麽需求)
同时我会想办法让系统上云端,
至少发生效能问题时还有动态扩展或虚拟机资源升级这两个手段。
对我而言,一切都是情境先决,
先知道战略目标,再决定战术手段,最後决定如何管控风险。
题外话,Clean Code 的作者在 Clean Architecture 一书中有提到一个类似的思辨问题:
一个正常运行但不能修改的系统,和一个不正常运行但好修改的系统,那一个重要?
作者给出的答案是:
一个正常运行但不能修改的系统,代表无法对後续的需求更动做修改,
所以这系统终究不能正常运行。
而一个不能正常运行但好修改的系统,可以透过不断修改让他可以正常运行,
且不破坏该系统的可修改性,因此该系统终究是能正常运行的。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.139.203.11
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1516535724.A.5ED.html
1F:嘘 darkMood: 废话连篇,请举一个正常运行但不能修改的系统,为辩而辩 01/21 21:27
2F:→ darkMood: 一堆人都喜欢讲一些屁话让自己看起来和别人不同..... 01/21 21:28
3F:→ darkMood: 至於你说的99%都不是工程师能够决定的啊......... 01/21 21:28
4F:→ feeya: 有阿 别人写的执行档 01/21 21:53
5F:→ pttworld: 不好修改是指难以理解改不动 01/21 22:12
6F:→ pttworld: 资讯系统为服务而生,最重要是可靠性 01/21 22:13
7F:→ testPtt: 你的主机板难道是很多个洞那种 还要自己接电线 01/21 22:20
8F:推 chuegou: 先学fpga自己兜CPU罗 01/21 22:51
9F:推 lentus: 观念正确! 01/22 01:29
10F:→ PUTOUCHANG: 商业观点未必如此, 一堆只有一代寿命的产品, 当然前者 01/22 01:40
11F:推 zzss2003: 推 01/22 10:37
12F:推 stosto: 都不能正常运作了.....还有啥不破坏可言 01/22 12:11
13F:→ tsairay: 现在compile很进步,不需要用一些艰涩的语法就能达成 01/22 18:53
14F:→ tsairay: 同样的效能,同样的IDE也很进步,看IDE直接找关联性 01/22 18:54
15F:→ tsairay: 也是很快,时代在进步,要多会用工具 01/22 18:54
16F:推 walilaV: 是不少东西就只用一代 或是紧急方案下的产物 … 01/23 17:05
17F:推 BlazarArc: 推 01/23 17:39