复用的双刃剑:软件工程里的悖论与挑战
![]()
中台视角看复用的魅力
▐ 坚实可靠的技术中台
▐ 饱受争议的业务中台
-
天然的不确定性
-
对现实世界的抽象
-
高昂的成本与未知的稳定性
![]()
软件工程的成本在哪里
In software engineering, cost estimation is often a more difficult task than in other engineering disciplines due to the intangibility of software.
译:在软件工程中,成本估算往往比其他工程学科更困难,因为软件是无形的。
Grady Booch 《Object-Oriented Analysis and Design with Applications》
▐ 确定性的开发成本
▐ 无上限的维护成本
-
软件工程成本在于维护
Software maintenance consumes a significant portion of the total lifecycle cost, making it the most expensive phase of software engineering. — L. Peter Deutsch Designing for Change: A Software Engineering Perspective.
译:软件维护消耗了总生命周期成本的很大一部分,使其成为软件工程中最昂贵的阶段。
-
复用的代码更难维护
-
认知负荷是高成本根因
重复代码是可耻的吗?
▐ 真重复代码与意外重复代码
两段代码可能非常相似甚至一模一样,但将出于截然不同的原因而被修改,我们称之为意外重复,而意外重复不应该被消除。应该允许重复持续存在,随着需求的变化,两段代码各自演化,这种重复将被消除。
Robert C.Martin 《Clean Craftmanship》
▐ DRY是一种应该谨慎使用的哲学
God, grant me the serenity to accept things that I cannot change. Grant me courage to change the things I can, and wisdom to know the difference.
译:请赐予我平静,去接受我无法改变的。给予我勇气,去改变我能改变的。赐我智慧,分辨这两者的区别。
Reinhold Niebuhr - Serenity Prayer
如果是真实重复代码,那一定需要进行避免吗?从理论上回答:是,但理论和实际往往有条鸿沟。美国神学家 Reinhold Niebuhr 在 Serenity Prayer 中写下了这段经典的祈祷文「赐我智慧,分辨这两者的区别」。其实我们也一样,有时我们并不能完全确定它到底是不是真实重复。
-
Don't Repeat Yourself
-
You Aren't Gonna Need It
-
Rule of Three
What experience and history teach is this: that nations and governments have never learned anything from history or acted upon any lessons they might have drawn from it.
译:人类从历史中学到的唯一的教训,就是没有从历史中吸取到任何教训。
Friedrich Hegel - The Philosophy of History
最后一点点思考
参考资料
本文分享自微信公众号 - 大淘宝技术(AlibabaMTT)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Ubuntu 25.04 代号揭晓:Plucky Puffin
在 Ubuntu 24.10 发布不久后,Ubuntu 官方揭晓了 Ubuntu 25.04 的代号,为 Plucky Puffin(勇敢的海鹦)。 自 Ubuntu 6.06 LTS 开始,Ubuntu 按照字母排序来给各发行版的代号进行取名,并于 Ubuntu 17.10 从字母 A 开始新的一轮。按照这一规律,轮到 Ubuntu 25.04 正好是以字母 P 开头。 “Plucky Puffin”是 Ubuntu 历史上第 2 个以 P 命名的代号,另一个是 Ubuntu 12.04 LTS “Precise Pangolin”。 OMG! Ubuntu 对这一代号进行了解析:“Plucky”是一个形容词,通常用来指某人/某物在面对挑战或障碍时表现出勇气、决心或信心。在某些情况下,它也是 Gutsy(勇气/胆量)的同义词,后者是 Ubuntu 7.10 “Gutsy Gibbon”代号中使用的形容词。 “海鹦”是一种小型海鸟,其喙色鲜艳,羽毛黑白相间,体形略显矮胖。因此虽然代号中使用的确切单词和动物不再像以前那样与即将发布的版本相关,但其猜测 Ubuntu 25.04 也许会在下...
- 下一篇
前端如何优雅实现0到auto的高度过渡
各位好,相信大家都知道,最近更新Chrome已经支持了0到auto的高度过渡。但是很多人反映这种特性太新了,出于兼容考虑用不了的。而实际上calc-size是可以渐进增强的。今天我就给大家表演一下,0到auto的渐进增强兼容所有浏览器。 我们先搭建一个空白工程化项目 这个示例工程。是一个计数器。 import * as React from "react"; import { Component } from "react"; interface AppProps { } interface AppState { count: number; } export default class App extends Component<AppProps, AppState> { constructor(props: AppProps) { super(props); this.increase = this.increase.bind(this); this.decrease = this.decrease.bind(this); this.s...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS8编译安装MySQL8.0.19