你可能见过这样的项目:刚起步就整上微服务框架、Kafka 消息中间件一把梭,再加上好几层抽象工厂 + 策略模式。等上线后才发现,系统只有两三个接口,压根没人用。
这些“自我感动式”的开发,其实是一种隐形浪费。它不是技术能力的展现,而是一种“过度假设未来”的风险决策。本文就来聊聊,怎么在架构设计中避免掉进“过度工程”的坑,选对“当下最合适”的解法。
在很多开发讨论中,经常会出现这样的对话:
这些听起来都很“有道理”,但问题是:
你确定那个“以后”真的会来吗?
架构设计,不能为了“展示设计能力”而去设计。而应该是——为当前的实际问题找最直接、最简单的解决方案,同时保留未来演进的可能。
下面这些操作你可能都见过:
这些设计在“大公司大业务”里可能确实需要,但对很多项目来说,是 沉没成本+运维负担+认知负债 三杀。
在开始设计之前,问自己:
设计越多,维护成本越高;模块越多,沟通成本越高。
YAGNI(You Aren’t Gonna Need It)原则的核心是:
“别为未来做设计,除非它真的已经来了。”
比如:
这些全都是典型的 YAGNI。
业务需求非常简单:
这类接口在很多 App、运营系统、活动平台里都很常见。
# service.py
class PointsService:
def add_points(self, user_id: int, points: int) -> int:
raise NotImplementedError
class PointsServiceImpl(PointsService):
def __init__(self):
self.points_db = {}
def add_points(self, user_id: int, points: int) -> int:
self.points_db[user_id] = self.points_db.get(user_id, 0) + points
return self.points_db[user_id]
# factory.py
def get_points_service() -> PointsService:
return PointsServiceImpl()
# main.py
service = get_points_service()
print(service.add_points(123, 10))
这个结构你肯定不陌生:接口 -> 实现 -> 工厂模式。
问题是:
# 简洁明了版本
points_db = {}
def add_points(user_id: int, points: int) -> int:
points_db[user_id] = points_db.get(user_id, 0) + points
return points_db[user_id]
# 测试用例
if __name__ == "__main__":
print(add_points(123, 10)) # 输出: 10
print(add_points(123, 5)) # 输出: 15
优势:
答:架构是可以演进的。你今天用一个函数实现,明天拆 class,一周后提取模块,一月后可以拆服务。
答:看使用频率、实现复杂度和维护成本之间的关系。如果你写了 100 行,只为支撑一个调用一次的接口,那就该反思一下。
当然不是。适度抽象依然重要,但要把握节奏。抽象是为了解耦,不是为了堆技术词。
架构设计的终极目标,不是“用最炫的技术”,而是“用最低的成本,跑通正确的业务”。
一个好的工程师,不是技术最潮的那一个,而是能判断什么时间该用什么设计的那一个。
切记:写代码是为了解决问题,不是为了写代码本身。
未来系统肯定会越来越复杂,需求也会不断增长。但你现在最重要的任务,是:
架构设计,不是一次性拍板的定案,而是伴随业务和团队成长的“长期策略”。
真正的技术力,是看你如何处理“复杂问题”,而不是你堆了多少“复杂技术”。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有