💩 过度设计是罪恶的!

阿轩的BUG
文章191
评论56
标签101
站点日志
作者总数:1位
置顶文章:0篇
标签总数:101条
文章总数:196篇
评论总数:56条
微语总数:201条
运行天数:2317天
最近更新:2026-07-28
文章标签
最新评论
Sherlock
2025-08-21
不是应该打包成apk文件吗,怎么突然就运行编译了,下一步呢
老金er
2025-05-25
人生设计非常必要,在信息化发达的今天,周围大部分人依然只能过着人生工程模式生活,长时间生活洗礼后,尽管“人生工程”已经不再适合很多人,他们也无法做出任何改变,人生设计给我们提供了新的思路,值得尝试
赏帮赚
2025-05-25
职场太多的尔虞我诈
三笑
2024-08-16
emlog6.0.1可以升级支持吗?
pony
2024-07-08
这篇文章提供了一种新的人生规划方法——"人生设计",它借鉴了产品设计的理念,鼓励人们以创造性和探索性的方式思考和规划自己的生活。以下是对这篇文章的几个评价维度: 创新性:将产品设计的理念应用于人生规划是一个新颖的视角,为人们提供了一种跳出传统生活轨迹,探索个性化生活路径的方法。 实用性:文章不仅提出了理念,还详细介绍了具体的实施步骤,包括自我评估、制定计划、原型设计和实践选择等,具有很强的操作性。 启发性:通过强调好奇心、不断尝试、重新定义问题等心态,文章鼓励人们打破常规,勇于探索未知,这对于激发个人潜能和创造力具有积极作用。 适应性:"人生设计"理念适用于不同人生阶段和不同背景的人,无论是希望从头开始的人,还是已经取得一定成就但希望探索新方向的人,都可以从中获得启发。 情感共鸣:文章对许多人对传统生活轨迹的不满和对改变的渴望进行了深刻的洞察,能够引起读者的共鸣。 可持续性:人生设计强调的是一个持续迭代和试错的过程,这与现实生活的发展规律相吻合,有助于人们在不断变化的环境中做出适应性调整。 教育意义:作为一种人生规划方法,"人生设计"可以作为教育的一部分,帮助年轻人更早地学会自我探索和规划,为未来的生活和职业发展打下基础。 局限性:尽管"人生设计"提供了一种新的思考框架,但它可能需要个人具备一定的自我认知和反思能力,对于一些缺乏自我探索经验的人来说,可能需要额外的指导和支持。 总体来说,这篇文章提供了一种有价值的人生规划方法,对于那些渴望改变、寻求个性化生活的人来说,是一种有益的参考和指导。
首页闲言碎语 🔖

软件开发的哪个阶段最容易招人喷?如果你严格按照什么瀑布模式、敏捷模式开发的话,你会发现永远是概要设计的评审阶段。

这个时候,屎山还没有成为既定的事实。多位理想主义达人,就会搬出各种规则、规范,来给你的方案下套子。

他们是为了你的方案更好么?大多数情况未必。有的人,多说几句是为了凸显自己的价值;有的人是刚看了几本书,感觉不吐不快;还有的人,本身就是完美主义者,看不得你的方案有任何瑕疵。总结下来,完美主义者还是有点作用的。

但当你把开发任务扔给这些指挥和挑刺的人,你会发现他们大多数不仅仅实现不了自己给套上的套子,连最基本的功能实现都是问题。

每当这时候,我内心都会大喊:让这些假洋鬼子去死吧!

组件替换问题

如果我们的技术栈,选用的是MySQL,我们会采用JDBC、MyBatis、JPA等一系列的基础的编码工具。但这种选择,对追求接口和实现分离的同学来说,却是不可忍受的。

这些人会搬出无数的理由,来说明,如果不加入一个中间层的话,代码是无法复用的。他们追求的是,如果你将来把数据库从MySQL切换到ElasticSearch,那么你几乎不需要改动任何代码。

“你有没有想过?如果你ES也不用了,把数据存储在Hbase中呢?”

这也是操蛋的DDD所追求和说明的,把一个简单的数据库操作给拆的七零八落。

如果把这种设计哲学推广开来的话,你会发现几乎每个地方都有问题。

项目中使用了Kafka,如果将来换成Pulsar呢?项目中使用了Http,如果将来要换成Socket呢?最让人担心的是,项目中使用了Java语言,如果后面使用Golang呢?是不是也要发明一个第三方语言来规避语言的差异?

值得注意的是,Spring家族在这些完美的目标上,产出了不少优秀的组件,比如Spring Data、Spring Cloud Stream等。

但这不代表你可以过度设计。因为用来屏蔽实现的这部分实现,本身就是风险的存在。

耦合有错么?

只要需求落在代码上,就一定会产生耦合,想要去除所有的耦合,那是根本不可能的。

在开发中,你为什么不想着为开发语言的耦合创造一个第三方语言呢?这个成本是大的,而且是非常没有必要的,如果真的有这种需求,你可以把它放在重构上。

同样的话,我也可以送给纠结底层数据库存储的同学。一旦你做了某个决定,想要完整的抽象就变的非常的奢侈,它不会比更换开发语言有更少的工作量。

这是一种思维惯式,也是一个度的问题。

在评审会议上喷一下非常的爽,但没有人会多想一想背后的工期、需求和必要性。

但如果放任耦合无限制的产生,显然也不是我们想要的,这个度的度量需要一定的学问。

内部技术和外部协作

我觉得冲突产生的根本原因,是评审者甚至开发者,没有弄清项目的边界是什么。

拿SpringCloud来说,只要定义好Feign接口的协作方式和规范,把文档写好命名做好,另外一个团队并不是很关心你后面到底是Java写的,还是挂了个sidecar的Golong程序。

再拿消息队列来说,全公司定下了Kafa作为数据交换的通道,虽然它没有JMS这样的协议兼容,你也不会蛋疼的去封装一层去兼容。大家默认Kafka的Topic/Partition机制,并基于这样的特性调整代码。

至于我的后端数据库,是用MyBatis去处理,还是用JPA去处理。是MVC三层模型,还是直接把SQL写在Controller里。只要这些是我的私有数据,外部团队永远不会用到的话,任何人都没必要对其指手画脚。

只要边界问题处理好,就不会产生大的乱子。

End

一刀切,在公司技术部门懒政的环境中,普遍存在。

在制定规范和标准的时候,大家都习惯兼容并包,照顾所有的业务线,做上一份。但在实践中,这种标准的问题通常问题多多,为业务方造成许多的困扰。

人要因材施教,规范也应该区分环境。制定规范的人活儿多一些,执行的人,生活就快乐一些!

上一篇
🗂 所以,e.target 和 e.currentTarget 到底有啥区别呢?
下一篇
🚑️ 10000000条数据循环怎么优化?