屎山代码怎么练成的

前言

代码库规模 说到屎山代码,肯定下意识认为是小白,写的修修补补,漏洞百出的代码。但是你见过专业人士写的屎山吗?没见过,来见识一下过度设计带来的屎山一角:ES的delete(update/search都一样)流程 在client阶段抽象模板设计无可厚非,当进行action.excute时,你就会发现越来越觉得味来了:

js 复制代码
┌───────────────────── 路径A ─────────────────────┐
│ TransportDeleteAction                           │
│         ↓                                        │
│ TransportAction.execute()                       │
│         ↓                                        │
│ TransportSingleItemBulkWriteAction.doExecute()  │
│         ↓                                        │
│ 调用 bulkAction.execute()  ←─ 这里是交接点,不是循环!
└─────────────────────────────────────────────────┘
                                                    ↓
┌───────────────────── 路径B ─────────────────────┐
│ TransportBulkAction.execute()                   │
│         ↓                                        │
│ TransportAction.execute()                       │
│         ↓                                        │
│ TransportAbstractBulkAction.doExecute()         │
│         ↓                                        │
│ 真正的批量处理逻辑                             │
└─────────────────────────────────────────────────┘

栈的深度翻了一倍。为了模板而模板,但是在业务逻辑上根本没关系的,都抽象在一起,封装为bulk,再调delete流程。它们就不应该抽到TransportAction中,这都是技术债累积。当zab,raft大行其道的时候,ES仍旧zen,试图证明自己,扭扭捏捏修补zen,10年后实在适应不了分布式协调了硬着头皮改成raft,但是你能明显看出ES的raft仍然有zen的影子,很累。如果不壮士断腕,重构代码结构走不远的。补丁最终会让积木崩塌。功能设计再好,也抵不住运维没人。从1.x兼容到8.x的API,能不18000的代码量就奇怪了。后续维护很困难

相关推荐
(Charon)9 分钟前
【Kafka】消息队列学习(一):为什么需要Kafka?从消息队列到整体架构
学习·架构·kafka
AI_Auto24 分钟前
架构视角看数字化转型|完整复盘:架构先行,完成数字化组织与运营重构
网络·重构·架构
晚安日记wanna1 小时前
政务 Agent 面试真题五个得分点缺一就掉档
面试·架构
Quor1 小时前
Zorv AI GenUI 技术架构深度解析:从双面设计到安全边界
人工智能·ui·架构
晚安日记wanna1 小时前
分布式和微服务差在哪从一次订单超时雪崩说起
面试·架构
李兆龙的博客1 小时前
从一到无穷大 #91:从 Habitat 看存储平台的整合与分工
数据库·人工智能·架构
阿文和她的Key1 小时前
OpenAI 关 Pro 入口事件复盘:企业 AI 架构的稳定性问题,不只是故障应急
人工智能·架构
安全指北针1 小时前
SaaS化轻量审计:技术架构与落地实践
架构
Dawson Zhu1 小时前
从“会回答“到“能执行“:AI Agent 的系统构成、运行机制与工程实践
人工智能·语言模型·架构·aigc·agi
努力努力再努力wz1 小时前
【Docker入门系列】从 LXC 到 containerd:一文梳理 Docker 容器运行时架构演进与轻量化原理
docker·eureka·架构