专栏名称: 芋道源码
纯 Java 源码分享公众号,目前有「Dubbo」「SpringCloud」「Java 并发」「RocketMQ」「Sharding-JDBC」「MyCAT」「Elastic-Job」「SkyWalking」「Spring」等等
目录
相关文章推荐
芋道源码  ·  SSH 的 22 端口原来是这么来的? ·  昨天  
芋道源码  ·  2025,Java开发已经炸了吗? ·  昨天  
芋道源码  ·  CK、ES、RediSearch 谁才是性能之王? ·  4 天前  
51好读  ›  专栏  ›  芋道源码

入职第一天,看了公司代码,牛马沉默了

芋道源码  · 公众号  · Java  · 2025-01-05 19:12

主要观点总结

文章介绍了关于一个社群和开源项目的相关信息,包括交流面试技巧、简历优化、求职解惑等内容,并提供了部分资料和资源链接。同时,文章也指出了在代码开发过程中可能会遇到的问题以及解决之道,并提到了该项目的优点和技术栈。最后,文章呼吁读者加入其知识星球,提升技术能力。

关键观点总结

关键观点1: 社群和开源项目介绍

文章介绍了一个社群,提供交流面试技巧、简历优化、求职解惑等服务,并推荐了一个开源项目,包括前后端技术栈、功能特性及项目地址等。

关键观点2: 代码开发过程中的问题

文章列举了在代码开发过程中可能会遇到的问题,如配置文件管理混乱、参数硬编码、日志打印方式不规范等,并给出了相应的解决之道。

关键观点3: 项目优点

文章也提到了该项目的优点,如无需过多文档、束缚小、基于 Spring Boot 等主流技术栈等。

关键观点4: 解决建议

对于代码开发过程中遇到的问题,文章给出了相应的解决建议,如规范代码、养成良好的编程习惯、使用外部配置文件等。

关键观点5: 知识星球推广

文章最后呼吁读者加入其知识星球,提升技术能力,并介绍了知识星球的内容范围和加入方式。


正文

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入芋道快速开发平台知识星球。下面是星球提供的部分资料: 

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能:

  • Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud
  • 视频教程:https://doc.iocoder.cn
【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本 

来源:juejin.cn/post/
7371986999164928010


入职第一天就干活的,就问还有谁,搬来一台N手电脑,第一分钟开机,第二分钟派活,第三分钟干活,巴适。。。

打开代码发现问题不断

1.读取配置文件居然读取两个配置文件,一个读一点,不清楚为什么不能一个配置文件进行配置

一边获取WEB-INF下的配置文件,一边用外部配置文件进行覆盖,有人可能会问既然覆盖,那可以全在外部配置啊,问的好,如果全用外部配置,咱们代码获取属性有的加上了项目前缀(上面的两个put),有的没加,这样配置文件就显得很乱不可取,所以形成了分开配置的局面,如果接受混乱,就写在外部配置,不能全写在内部配置,因为

prop_c.setProperty(key, value);

value获取外部配置为空的时候会抛出异常,properties底层集合用的是hashTable

public synchronized V put(K key, V value) {
    // Make sure the value is not null
    if (value == null) {
        throw new NullPointerException();
    }
}

2.很多参数写死在代码里,如果有改动,工作量会变得异常庞大,举例权限方面伪代码

role.haveRole("ADMIN_USE")

3.日志打印居然sout和log混合双打

先不说双打的事,对于上图这个,应该输出包括堆栈信息,不然定位问题很麻烦,有人可能会说e.getMessage()最好,可是生产问题看多了发现还是打堆栈好;

还有如果不是定向返回信息,仅仅是记录日志,完全没必要catch多个异常,一个Exception足够了,不知道原作者这么写的意思是啥;还是就是打印日志要用logger,用sout打印在控制台,那我日志文件干啥;

4.提交的代码没有技术经理把关,下发生产包是个人就可以发导致生产环境代码和本地代码或者数据库数据出现不一致的现象,数据库数据的同步是生产最容易忘记执行的一个事情;比如我的这家公司上传文件模板变化了,但是没同步,导致出问题时开发环境复现问题真是麻烦;

5.随意更改生产数据库,出不出问题全靠开发的职业素养;

6.Maven依赖的问题,Maven引pom,而pom里面却是另一个pom文件,没有生成的jar供引入,是的,我们可以在dependency里加上

pom

来解决这个问题,但是公司内的,而且实际也是引入这个pom里面的jar的,我实在不知道这么做的用意是什么,有谁知道;求教

以上这些都是我最近一家公司出现的问题,除了默默接受还能怎么办;

那有什么优点呢:

  • 不用太怎么写文档
  • 束缚很小
  • 学到了js的全局调用怎么写的

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

解决之道

怎么解决这些问题呢,首先对于现有的新项目或升级的项目来说,spring的application.xml/yml 完全可以写我们的配置,开发环境没必要整外部文件,如果是生产环境我们可以在脚本或启动命令添加

nohup java -Dfile.encoding=UTF-8 -Dspring.config.location=server/src/main/config/application.properties -jar xxx.jar &

来告诉jar包引哪里的配置文件;也可以加上动态配置,都很棒的,其次就是规范代码,养成良好的规范,跟着节奏,不要另辟蹊径;老老实实的,如果原项目上迭代,不要动源代码,追加即可,没有时间去重构的;


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)