By 小墨
2026年3月17日
91
643
软件复杂性的累积:一个电商功能的技术债务警示录
在软件开发的日常工作中,你是否曾遇到过这样的情况:一个最初看似简单的需求,经过几次迭代后变得越来越难以理解和维护?这并非个例,而是软件系统演进过程中的普遍现象。本文将通过一个电商系统「限时折扣」功能的典型案例,带你深入理解软件复杂性是如何累积的,以及如何在开发中避免陷入「越做越乱」的困境。
复杂性的本质与表现
让我们先看一个虚构但极其真实的故事。第一周,团队需要在两周内上线「限时折扣」功能,一位「战术快枪手」开发者当晚就完成了实现——直接在订单服务里加一个大开关,判断当前时间是否命中折扣时段,如果是就在结算价上打一个比例折扣。没有新服务、没有抽象、测试也只有两条冒烟用例。第二天演示顺利,大家鼓掌表扬效率高。 第三周,「团购」和「会员价」需求接踵而至。这位开发者把限时折扣的逻辑复制了一份,叠加两个if分支,再加上两个Feature Flag。因为赶时间,他把用户等级查询直接打到了用户服务的同步接口里,并在超时时默认用户是普通会员,避免影响下单成功率。上线顺利,项目周会上大家一致认为这套「战术打法」可复制。 第四个月,诡异Bug开始出现:会员价和满减券叠加时,有时多打了一次折。十分钟修好后,为了稳妥又加了一个保护开关。 第六个月,线上报警:东八区和UTC时间换算错了,午夜跨天时部分订单重复计算折扣。临时补丁上线,问题止住了,但「待重构」的卡片又被新一轮活动排期盖过去。 第九个月,「跨店合并优惠」需求来了,需要支持活动实时生效、规则热更新。团队发现用现有代码已经堆不起来了,
战术性编程 VS 战略性编程
这个故事揭示了一个残酷的现实:复杂性不是某个大错误造成的,而是无数小捷径的总和。每一个「合理的妥协」——多一个开关、复制一段逻辑、加一个短路条件——当时都像救命稻草,叠起来却成了沼泽。 那么,复杂性到底从何而来?从本质上讲,复杂性源于两个核心因素:依赖和晦涩。 依赖是软件的基本组成部分,无法完全消除。实际上,我们在软件设计过程中有意引入了依赖——每次编写新类时,都会围绕该类的API创建依赖关系。但是,软件设计的目标之一是减少依赖关系的数量,并使依赖关系保持尽可能简单和明显。 晦涩则是当重要的信息不明显时发生的情况。一个简单的例子是变量名称过于笼统,没有携带太多有用的信息。或者某个变量的文档没有说明它的单位(秒还是毫秒),所以找到它的唯一方法是扫描代码中使用该变量的位置。 依赖和晦涩共同导致了复杂性的三种典型表现: 第一,变更放大。看似简单的变更需要在许多不同地方进行代码修改。这是因为代码中存在着隐式的依赖关系,一个地方的改动可能连锁影响到其他看似不相关的地方。 第二,认知负荷。开发者需要掌握多少知识才能完成一项任务。较高的认知负担意味着开发者必须花更
真正的速度来自良好设计,而非侥幸「跑起来」。每一次对设计的轻视,都在为未来的瘫痪埋下伏笔。
“小墨”管理复杂性的核心方法
回到我们的故事,那位「战术快枪手」本质上是一个「战术性编程」的践行者。战术性编程的开发思路是「越快完成任务越好,之后的问题之后再说」。其代码特点是「不会花费太多时间来寻找最佳设计,每次增加一些复杂性或引入一两个小错误」。 几乎每个软件开发团队都有至少一个将战术性编程发挥到极致的开发者。他们编写代码的速度比其他人快得多,实施新功能时,没有人能比他们更快地完成任务。在某些组织中,管理层将这类开发者视为英雄。然而,他们留下的「风卷残云」般的痕迹,却需要其他开发者花费数倍时间去清理。 与战术性编程相对的是「战略性编程」。战略性编程需要一种投资心态:开发者必须花费时间来改进系统的设计,而不是采取最快的方式来完成当前的项目。这些投资会在短期内让我们放慢脚步,但从长远来看会加快我们的速度。 那么,正确的投资比例是多少?随着对系统和业务的不断了解,理想的设计会逐渐出现。因此,最好的方法是连续进行大量小额投资。建议将总开发时间的10%到20%用于投资。这个比例足够小,不会对日常安排产生重大影响,但又足够大,可以随着时间的推移产生重大收益。虽然项目在开始时比纯战术方案多花费10-20%的
那么,如何才能有效地管理软件的复杂性?以下是几个核心方法: **1. 抽象与信息隐藏** 管理复杂性最重要的技术之一是对系统进行良好的设计,使开发者在任何规定时间只需要面对整体复杂性的一小部分。实现这一目标的手段就是抽象。 抽象是实体的简化视图,其中省略了不重要的细节。最好的模块是那些其接口比其实现简单得多的模块——这样的模块被称为「深模块」。深模块是一个很好的抽象,因为其内部复杂性的一小部分对其用户可见。 模块的接口有两种信息:正式信息和非正式信息。接口的形式部分在代码中明确指定,可以通过对编程语言检查其正确性。接口的非正式部分包括高级行为,例如函数删除文件的事实。这些没有以编程语言可以理解或执行的方式指定,只能使用注释来描述。 实现深模块最重要的技术是信息隐藏。每个模块应封装一些知识,这些知识代表设计决策——比如如何实现TCP网络协议、如何在多核处理器上调度线程、如何解析JSON文档。这些知识都嵌入在模块的实现中,但不会出现在其接口中,因此其他模块不可见。 **2. 警惕信息泄漏** 信息泄漏是软件设计中最重要的危险信号之一。当一个设计决策
如有侵权,请联系删除。
Related Articles
-
Sun Jun 21 2026库克坦言涨价无可避免,行业真相:苹果已错失 AI 先发优势
2026年6月19日,苹果 CEO 蒂姆·库克在采访中直言,由于全球内存芯片等关键部件成本上升,苹果面临全线产品涨价的现实压力。外界解读该轮涨价不仅是成本传导,也是苹果在AI时代竞争力变化的反映。
-
Sun Jun 21 20262026-AI科学家-Nature:两天完成十年研究,加速科学发现新时代
谷歌DeepMind、谷歌研究院与谷歌云团队在《自然》期刊发布基于 Gemini 的多智能体系统 Co-Scientist。该系统由多个专责智能体组成,覆盖假设生成、实验设计、数据分析与交互总结等环节
-
Sun Jun 21 2026阿里腾讯等大厂Agent同台交锋!年度AI智能体大会7月开幕
2026 中国 AI 智能体大会将于 7 月在杭州举办,主题为“范式跃迁 重塑世界”。大会汇聚了来自阿里、腾讯等大厂的 Agent 团队与 70 位重量级嘉宾,设置了企业级智能体专题论坛、产品创新论坛
-
Sun Jun 21 2026全国首家政医企共建AI医院成立;25项目招标超1.7亿;证监会支持AI大模型企业上市;多个医疗智能体发布
光谷人工智能医院宣布成立,这是国内首家由政府、医院与 AI 企业共建的医疗机构,旨在将 AI 技术深度融入临床与医疗服务环节,提高诊疗效率与服务覆盖能力。
-
Sat Jun 20 2026AI跨境电商交流会,探索'一人出海'新模式
2026年6月的交流会宣布了MoonClaw这一面向跨境电商的AI智能体,目标是将传统的多角色、多环节电商流程浓缩为一个可自动化执行的智能体体系,为个人或小团队出海提供一整套支撑。
-
Sat Jun 20 2026PPT 从跑分到护栏:AI Agent 可观测和质量保障体系
该PPT资料全面介绍了从性能跑分到安全护栏的AI Agent质量保障体系,列举了标准、评估指南与产业实践,帮助团队建立可观测且有保障的智能体服务。
-
Sat Jun 20 2026Hermes Agent v0.17.0重磅发布:AI智能体的触达时代来了
Hermes Agent 发布了 v0.17.0(The Reach Release),这是一次规模与深度兼具的更新,覆盖大量提交与合并请求,旨在提升智能体的触达能力与协作效率。
-
Sat Jun 20 2026Cursor 600亿美元卖给SpaceX,DeepSeek估值突破500亿:AI商业化两条截然不同的赢家路径
2026年6月,AI行业出现两件具有象征意义的大事:Cursor 的母公司 Anysphere 被 SpaceX 以全股票方式收购,交易规模达600亿美元;与此同时,中国公司 DeepSeek 完成了
-
Sat Jun 20 2026当AI贯穿消费到产业,618彻底变了
2026年618大促成为国内电商首次实现AI全场景、全产业深度渗透的标志:从消费者触达、商品推荐到仓储履约、工业采购,AI技术覆盖了零售运转的各个环节,带来体验和效率的双重跃迁。
-
Sat Jun 20 2026Fluss+Flink+AI Agent:淘宝交易实时风控智能体探索!
近年来电商交易规模与复杂度持续增长,实时风控成为保障平台安全与用户体验的关键。文章介绍了基于 Fluss 与 Flink 的实时流式处理结合 AI Agent 的技术探索,目标是在毫秒级完成数据采集、
-
Sat Jun 20 2026Cursor 600亿美元卖给SpaceX,DeepSeek估值突破500亿:AI商业化两条截然不同的赢家路径
报道指出 SpaceX 以 600 亿美元全股票交易收购 Anysphere(Cursor 母公司),创下 AI 与开发者工具领域的重大并购案例。同时中国公司 DeepSeek 完成大额融资,估值突破
-
Fri Jun 19 2026公开课来了!第19讲:学习搭建生产排产与LCEL架构 AI 智能体
现代职业教育网的《职见AI》栏目推出第 19 期公开课,主题为生产排产与 LCEL 架构 AI 智能体,旨在将学术研究与企业实战结合,提升制造业智能化能力。
-
Fri Jun 19 2026AI PCB生态专业展 超75%展位售罄,首批展商选位圆满完成 !10月引领全球产业风向
2026电子半导体产业创新发展大会暨国际电子电路(大湾区)展览会首轮选位顺利完成,首批展商选位圆满落定,超75%展位已被预订,显示业内对AI PCB与高端电子封装的强烈需求。
-
Fri Jun 19 2026AI来了,中国动画电影反而更需要人了
文章从行业视角出发,讨论 AI 技术在中国动画电影中的应用与影响,指出虽然 AI 能在制作环节显著提升效率,但创作灵魂与叙事深度仍然依赖人类创作者。
-
Fri Jun 19 2026AI时代的智能体先锋论坛
CCF TF技术前线第180期将以'AI时代的智能体先锋论坛'为主题,汇聚行业实战专家与学术权威,共同探讨智能体工程与多Agent协同的前沿问题与落地路径。
-
Fri Jun 19 2026'梁文锋'们,上市有门了
在陆家嘴论坛上,证监会宣布科创板第五套标准将覆盖AI大模型企业,并提出申报企业需具备至少一款已上线并实现规模化应用的大模型,明确了政策支持与监管要求。
-
Fri Jun 19 2026AI Agent倒逼舱驾一体芯片成为刚需?
文章分析了AI智能体对汽车芯片产业的影响,指出当智能体从云端对话走向端侧执行时,对算力、通信与功耗提出了新的工程约束,进而推动舱驾一体芯片的需求上升。
-
Fri Jun 19 2026AI资本开支2.0
摩根大通最新研报系统性上调了2026-2030年AI基础设施的资本开支预期,认为在生成式AI与智能体迅速落地的驱动下,基础设施投入将迎来新一轮爆发。
