打印

入职第1天!瞅了眼公司代码,给我干沉默了…

[复制链接]
436|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
科叼|  楼主 | 2025-5-14 16:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

从前听过一个故事:

“我一个人要维护公司三十多个项目,几乎包含了前端2015年到目前出现过的所有主流技术栈,啥小程序、app、h5、后端服务都有,nodejs版本要随时切换,从14到20都有。客户群几十个,企业微信,微信,飞书,钉钉都要同时用,随时有人找。编辑器同时开78个,电脑风扇从早转到晚,有时候自己都不知道自己在写哪个项目。”

终于有一天,我迎来了自己的故事:



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

顺便帮朋友吆喝一声,大厂机会,如果你基本技术ok,前、后端测试可推https://jsj.top/f/o38ijj,待遇给的还可以的。

打开代码发现问题不断
读取配置文件居然读取两个配置文件,一个读一点,不清楚为什么不能一个配置文件进行配置






一边获取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里加上

<type>pom</type>

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



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

那有什么优点呢:

不用太怎么写文档
束缚很小
学到了js的全局调用怎么写的(下一篇我来写,顺便巩固一下)
解决之道
怎么解决这些问题呢,首先对于现有的新项目或升级的项目来说,spring的application.xml/yml 完全可以写我们的配置,开发环境没必要整外部文件,如果是生产环境我们可以在脚本或启动命令添加 nohup java -Dfile.encoding=UTF-8 -Dspring.config.location=server/src/main/config/application.properties -jar xxx.jar & 来告诉jar包引哪里的配置文件;也可以加上动态配置,都很棒的,

其次就是规范代码,养成良好的规范,跟着节奏,不要另辟蹊径;老老实实的,如果原项目上迭代,不要动源代码,追加即可,没有时间去重构的;


——转载自:小红帽的大灰狼

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

188

主题

198

帖子

1

粉丝