Re: [讨论] 效能与易维护性的取舍?

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

Links booklink

Contact Us: admin [ a t ] ucptt.com