当前位置:网站首页>读《Software Engineering at Google》(15)
读《Software Engineering at Google》(15)
2022-04-23 17:22:00 【InfoQ】
- 读《Software Engineering at Google》(15)—— Deprecation
- :@Google,代码被假设为负债(liability),代码并不是资产(asset)
- :弃用(Deprecation)vs 兼容(Compatibility),前者需要勇气,后者也需要勇气,一种是丢掉旧轻松向前,所谓丢的勇气,一种是抱持旧负重前行,所谓抱的勇气。虽然都是勇气,前者的勇气会带来更多自信和机会,后者却在持续削弱自己的勇气,直到恐惧感滋生。
- :所谓负债,就是欠缺,那就要还债,废弃就是免除债务,这么说的确有道理。可是代码为何是债务,直觉中,或者说一直以来,代码都认为是值钱的资产,这样的认知翻转,为何会有,怎么产生,怎么逆转,脑子有点打结。
- :强制报废,这在机械型产品里是常规。磨损到一定的程度,安全隐患持续上升,这个理由足以启动强制报废。报废换新的过程,就是在升级迭代的过程。软件系统,怎么跑也不会把CPU或内存给磨损坏,可是这不代表没有安全问题。软件系统基于的技术和使用环境,都在快速迭代改进中,这条进步的演进路线因素,尤其是网络因素引起的使用环境改变,导致安全问题从刚开始的不太考虑,到最后的直接暴露。这样的安全问题,足以成为启动软件报废的一个理由。
- :持续问下去,到底什么因素,能推动软件系统持续改进,直到出现全新替换。忒修斯之船,每天换一部分,经过一段时间,几乎每个地方都是新部件。换下来的算废弃,装上去的算兼容,最终还是忒修斯船的样子。如果它刚开始能打火炮,那么无论如何替换,都不会具备发射巡航导弹的能力。对。如果功能没有变化,至少没有革命性变化,那就是持续在兼容替换。只有出现火炮到巡航导弹的颠覆式功能差异,才要废弃木质的忒修斯之船,改为钢铁质的巡洋舰。再细想一下,我可没听说过军舰可以每天换一点的说法。这也同时在说,越是强大、越是专用的系统,当其功能被淘汰时,也就是其软件系统被废弃的时候。在软件行业,单体系统到分布式系统,之所以不需要替换硬件,原因在于在硬件之上的基础操作系统软件,进行了彻底革新,结果还依然兼容单体系统下的软件,这算是软件加一层的魔力再现。
版权声明
本文为[InfoQ]所创,转载请带上原文链接,感谢
https://xie.infoq.cn/article/2aeb4a87f6db9f2469a56018a
边栏推荐
- Clickhouse table engine
- Simulation of infrared wireless communication based on 51 single chip microcomputer
- JS, entries(), keys(), values(), some(), object Assign() traversal array usage
- Collect blog posts
- groutine
- Flash project cross domain interception and DBM database learning [Baotou cultural and creative website development]
- Advantages and disadvantages of several note taking software
- node中,如何手动实现触发垃圾回收机制
- Node template engine (EJS, art template)
- [ES6] promise related (event loop, macro / micro task, promise, await / await)
猜你喜欢

文件操作《二》(5000字总结篇)

Use of todesk remote control software

ASP. Net core JWT certification
![[logical fallacy in life] Scarecrow fallacy and inability to refute are not proof](/img/71/14a17128dbe0f02edb4db3da479ef2.jpg)
[logical fallacy in life] Scarecrow fallacy and inability to refute are not proof

Go language, array, string, slice

Further study of data visualization

线性代数感悟之1
Flash project cross domain interception and DBM database learning [Baotou cultural and creative website development]
![Using quartz under. Net core -- general properties and priority of triggers for [5] jobs and triggers](/img/65/89473397da4217201eeee85aef3c10.png)
Using quartz under. Net core -- general properties and priority of triggers for [5] jobs and triggers

For the space occupation of the software, please refer to the installation directory
随机推荐
For the space occupation of the software, please refer to the installation directory
El date picker limits the selection range from the current time to two months ago
Collection of common SQL statements
古代埃及希腊,数学用的什么进制
1-3 nodejs installation list configuration and project environment
Nacos + aspnetcore + Ocelot actual combat code
Shortcut keys (multiline)
【解决报错】Error in v-on handler: “TypeError: Cannot read property ‘resetFields’ of undefined”
matlab如何绘制已知公式的曲线图,Excel怎么绘制函数曲线图像?
Shell-cut命令的使用
Clickhouse SQL operation
. net type transfer
SiteServer CMS5. 0 Usage Summary
Solution of Navicat connecting Oracle library is not loaded
node中,如何手动实现触发垃圾回收机制
Promise (I)
freeCodeCamp----shape_ Calculator exercise
Further study of data visualization
Using quartz under. Net core -- job attributes and exceptions of [4] jobs and triggers
Net standard