屎山代码怎么练成的

前言

代码库规模 说到屎山代码,肯定下意识认为是小白,写的修修补补,漏洞百出的代码。但是你见过专业人士写的屎山吗?没见过,来见识一下过度设计带来的屎山一角: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的代码量就奇怪了。后续维护很困难

相关推荐
凤山老林40 分钟前
高可用服务容错架构:Spring Boot 集成 Resilience4j 实战指南
spring boot·后端·架构·resilience4j
ZJU_统一阿萨姆1 小时前
【算子开发】扫描(Scan)与前缀和
开发语言·arm开发·架构·系统架构·硬件架构
Dawson Zhu1 小时前
Agent自我纠错死循环:从原理剖析到工程化防御体系构建
人工智能·语言模型·架构·aigc
2601_966871402 小时前
OpenGL-自主高性能三维GIS平台架构与实现-第二季课
架构
奈斯先生Vector2 小时前
OpenScience 安装失败怎么办?Windows 环境、API 配置与本地服务排错指南
人工智能·windows·架构·开源·aigc·midjourney
Dawson Zhu2 小时前
【AI架构前沿】MEMO:解耦推理与记忆,破解大模型“知识更新“与“灾难性遗忘“的两难困境
人工智能·架构·aigc·agi
Dovis(誓平步青云)4 小时前
从Redis指标采集到异常告警:redis_exporter + Prometheus 完整实战
服务器·数据库·人工智能·redis·架构·prometheus·vibe coding
QN1幻化引擎13 小时前
DalinX Phi 性能突破:跨层秩保持对齐与意识涌现度量的实证研究
人工智能·ai·架构·agi·asi
Warren2Lynch13 小时前
从提示词到架构:Visual Paradigm VPasCode AI 驱动更新完全指南
人工智能·架构
ZGIAI14 小时前
ZGI 发布治理:同一个 Agent 服务多个入口
人工智能·架构