• 遇到技术很烂的主管工作起来真累
  • 发布于 1天前
  • 97 热度
    9 评论
公司新来一个技术 Leader ,提的一些问题总是非常的无语。一大早的来公司,看不懂我的工程架构设计,工程都封装好了,看不懂工程代码,问我这些问题:我们系统是云平台,要接入多类业务和各类型设计,为什么要做成 SaaS 服务? 为什么要一个接口要建 vo 类 param 类? 为什么要再自己封装一层分页结果 vo 类,不直接把 mybatis plus 的分页接口结果类返回?

我真的相当无语。工程我都有写 readme 文档,且代码都有注释的。技术管理我看过很多,但是这种技术水平的,第一次见!我们系统是云平台,要接入多类业务和各类型设计,为什么要做成 SaaS 服务? 为什么要一个接口要建 vo 类 param 类? 为什么要再自己封装一层分页结果 vo 类,不直接把 mybatis plus 的分页接口结果类返回?我都不想回答,直接给他复制 GPT 回答的结果:


一、为什么要做成 SaaS 服务?

多租户需求 云平台通常面向多个企业或业务方接入,SaaS 模式天然支持多租户架构( multi-tenancy ),便于管理不同客户的数据隔离、授权、定制化配置等。平台可扩展性强 业务方不再直接依赖你的系统内部实现,只通过 API 或租户配置使用服务。后续你升级、修改功能不影响业务方使用。

降低接入成本 业务方不需要部署自己的系统,降低技术门槛和接入成本。你平台统一提供账号体系、功能服务、数据接入。

统一运营和监控 SaaS 平台方便做统一的日志、指标监控、授权、计费、异常告警和租户管理,方便后期商业化和服务保障。
支持“业务+能力”平台化建设 SaaS 模式可以将你的技术能力(如:设备对接、状态监控、告警处理等)封装为平台服务,实现“能力即服务”,提高复用效率。

二、为什么要为每个接口单独建 VO 类和 Param 类?
解耦业务逻辑与外部接口 每个接口的参数和返回值不直接暴露数据库实体(如 DO 或 Entity ),而是通过 Param 和 VO 进行封装,可以防止结构变动影响外部接口。增强接口可维护性 接口一旦发布就要保证兼容性。用 VO/Param 类结构清晰,后期扩展字段不会影响旧字段使用。 例如:新增字段只需修改 VO ,不必影响其他系统。

避免 Entity 暴露敏感字段 数据库实体类往往包含业务内部字段、敏感数据、逻辑控制字段(如 isDeleted 、createUser 等),不适合直接暴露给前端或外部系统。更好支持校验与文档生成 Param 类中可以加上 @Valid 注解、Swagger 文档注解等,便于接口参数校验和自动生成 API 文档。支持多种前端适配/多端渲染 VO 可以根据不同前端( Web 、小程序、App )做裁剪或拼装,更灵活。

三、为什么不直接返回 MyBatis Plus 的分页结果类,而要封装自己的分页结果 VO 类?
隔离框架依赖 你平台可能以后换成 JPA 、Jooq 、DSL 等 ORM ,直接返回 MyBatis Plus 的 IPage 会让业务逻辑耦合于该框架,不利于未来替换。

返回字段不够友好 IPage 的字段命名如 records, total, size, current 等可能不符合前端/三方接口标准(比如有些接口需要 pageNo, pageSize, dataList )。

分页结果 VO 可以统一封装元信息 你可能希望分页结果中统一返回:
code 、message
数据列表( data )
当前页、总页数、总条数等
时间戳、耗时统计等平台级信息
通过自定义 PageResult<T> 类,可以统一返回结构,便于前后端协作。

跨系统统一分页协议 如果你平台提供 API 给外部调用(例如 SaaS 客户或前端),封装自己的分页结果结构能统一整个系统返回格式,提高规范性和兼容性。
用户评论
  • 我没那么帅
  • 想起来我遇到的一个前端组长,不知道 CSS BEM( https://getbem.com/) 命名规则。让我们要按照她不知道从哪里 copy 的前端规范写,我指出来后,BEM 就加进了规范。但当时因为类似的这些事情搞得太难受,表达上有些问题,感觉得罪了她。之后由于她能力不行,脾气还不小,就被公司开了。团队代码风格一致确实是有必要的,但是作为主管这种基础的东西都不懂,挺膈应人的。
  • 2025/6/13 9:47:00 [ 0 ] [ 0 ] 回复
  • 秋萧索
  • 不过,这个为什么。是不懂还是疑问为什么搞这么复杂?不要 vo 就活不下去了?如果人不多,不搞复杂的设计方案,效率是更快的…所以这个“为什么”是指什么?你确定公司黄了之前你会动底层数据选型?我理解你说的 saas 服务是微服务? saas 和云平台是业务领域不是技术领域,没看懂。个人感觉你的 leader 关注的是为什么搞这么复杂。
  • 2025/6/13 9:45:00 [ 0 ] [ 0 ] 回复
  • 若如初见
  • 我当啥事呢,原来是 java 那套恶心的设计模式,各种抽象,其他语言一句话的事,java 来回啰嗦几个文件,恶心的一逼,虽然我不喜欢甚至讨厌,但换做是我,看到已经写完的玩意,也不会多说啥
  • 2025/6/13 9:19:00 [ 0 ] [ 0 ] 回复
  • 摇滚枷锁
  • 我们老大,别的部门转过来的,压根不懂代码。整天和人讲话,非要趴人家耳朵边,悄悄话,搞的什么都见不得人一样。能做的就是上级开会胡扯,然后溜须拍马,功能做出来了,点点功能什么的,然后指点一下江山。有别的团队人家找他,他什么都不懂,就在那胡扯,说的甚至都是错的,听了真想笑😆。他不懂技术,整体方案什么的,也插不上话,张口说的就像楼主感觉一样。不过用他来甩锅到是非常不错,反正下面说啥就是啥。
  • 2025/6/13 9:18:00 [ 0 ] [ 0 ] 回复
  • 随风流浪
  • 估计不是你这个技术栈出身,很多什么博士啊,使用什么 python 的,是没有工程概念的,他们眼里就觉得有那么复杂吗,直接输出不好吗?
  • 2025/6/13 9:15:00 [ 0 ] [ 0 ] 回复
  • 枪蹦狗友
  • 你先把他当成一个平级的新同事就好了, 他只是在熟悉项目和团队成员风格, 刚来几天看不出一个人的成色的, 还是要给点耐心和时间, 个人觉得格局可以先大点
  • 2025/6/13 9:15:00 [ 0 ] [ 0 ] 回复
  • Thintime
  • 水货技术主管是这样的,我第二家的技术主管还要我帮他装编译器!(后面跑得快赶紧离开这鬼地方了)
  • 2025/6/13 9:13:00 [ 0 ] [ 0 ] 回复