当前位置:网站首页>读《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
边栏推荐
- 1-2 characteristics of nodejs
- [WPF binding 3] listview basic binding and data template binding
- Using quartz under. Net core - calendar of [6] jobs and triggers
- Use between nodejs modules
- Basic case of Baidu map
- [simple understanding of database]
- ASP. Net core configuration options (Part 2)
- Deep understanding of control inversion and dependency injection
- 1-2 JSX syntax rules
- C语言程序设计之函数的构造
猜你喜欢
Detailed explanation of Milvus 2.0 quality assurance system
Scope and scope chain in JS
Further study of data visualization
Use of todesk remote control software
[PROJECT] small hat takeout (8)
Solution architect's small bag - 5 types of architecture diagrams
Lock锁
Use between nodejs modules
Signalr can actively send data from the server to the client
. net cross platform principle (Part I)
随机推荐
Use of shell sed command
Clickhouse SQL operation
How does matlab draw the curve of known formula and how does excel draw the function curve image?
Websocket (basic)
线性代数感悟之2
Understanding of RPC core concepts
Use between nodejs modules
Excel quickly and automatically fills the contents of a row on a blank cell
自定义my_strcpy与库strcpy【模拟实现字符串相关函数】
Scope and scope chain in JS
Promise (IV)
The system cannot be started after AHCI is enabled
ASP. Net core configuration options (Part 2)
Preliminary understanding of promse
Wiper component encapsulation
Generation of barcode and QR code
Document operation II (5000 word summary)
Customize my_ Strcpy and library strcpy [analog implementation of string related functions]
[ES6] promise related (event loop, macro / micro task, promise, await / await)
Generating access keys using JSON webtoken