2020-2-3 今天开个头。
万事开头难,也正如公司的开始。
对应同事不会用真名,就都是用字母代替。
互联网公司,跟传统医疗行业公司的区别,在进公司的第一天就感受到了。人数不多,boss兼职产品,然后就是三个研发,其中我浮华,小A,小B。小B是个大大咧咧,搞PY(python),小A算是我们工作最长的,会搭服务器,弄架构。
故事开始。
首先确定我们要用到的技术,之前公司用到的是spring+springMVC+mybatis,数据库是oracle。数据库oracle跟mysql其实差别不是很大,其中主要是一个是自增主键,另外一个是分页差别。
同事最后确定下来是 springboot+mysql+angular 来进行搭建。springboot全家桶也是在这时候刚刚开始接触,从当时来看从spring变成springboot,害怕自己又多了很多学习的时间支出,结果真香。犹如从eclipse 到 sts ,最后到idea的转变,很快从不习惯到适应。
搭建自己的项目,当时用的是码云,因为人少,只有三个技术,刚好码云私人版本人数上限也是3人,之后加入了前端vue 小C妹子,以及换了了更有经验的组长大D,我们自己在办公室另一台电脑搭建了SVN,然后就开始扔小乌龟进行提交。
在组长大D来之前,我们的项目是管理端跟用户端一起的。当时是类似毕设的设计一个项目的习惯,什么都堆放在一起,这样一些东西就可以复用。客户跟管理者的区别在于用户表某个权限字段 1.2的区别。(ps.boss不懂技术,只看成品,懂产品效果怎么样,但是对于你怎么完成的。没办法给出合理建议)
============================================================
开始阐述大体,首先要有认知,技术服务于业务,好的技术可以让业务变得更好,但是引入更好的技术有技术成品,知识储备,你能满足跟驾驭技术的使用吗?
一开始,项目以springboot为模板,需要开启什么业务,对应用到,就开始导入什么架包,处于一个很混乱的,pom文件可以因为一个简简单单的功能,然后对应网上提供的demo需要导入maven,导入比较长的一段代码,一般写好之后,即使功能模块被废弃了,也没有去删除,或者隐藏自己代码的规范约束。那段时间,可以说天马行空吧,没有一些代码规范约束,就如同脱缰的野马,某一些时候代码写的很快,网上对应demo完成自己功能的需求,就镶嵌进来。直接导致的后果就是:1.不是你的代码,你不敢碰,因为你如果要修改,你需要梳理他代码整条线相关的,然后你才能确定你修改的是否会影响到其他的,小项目都这样,如果大项目,后果会很严重 2.是你的代码,你不确定你什么时候会再次启用,有一些代码就放置,没有进行很好优化 3.没有一个统一的代码规范,往往你的命名可能别人就看不懂,更有甚者一些命名是后面加123数字,这给后续别人维护造成了困扰,往往这类的可能就只能推倒重写,此时还是会存在问题1。所以代码规范约束就很重要了。
从原先的客户端跟管理端代码写一起,到后面的客户端跟管理端分开。原先的设计让人笑出声来,判断是否是管理人员字段,然后如果是就出现进入管理端的跳转路径,如果不是就隐藏。你用浏览器按F12,对应的跳转管理端跳转路径直接就出现,再次操作并没有做身份校验,也就是你拿到对应跳转管理端路径,你就可以登录后面管理端。基于毕设水平,因为都是自己操作,没有对应安全意识,这种情况出现就很危险。当时的网址只是简单提供数据查询,并没有资金流的处理。后面就改成了客户端跟管理端分开,二个项目进行操作。
再说一个数据库的处理。在学校时候,有三大范式,但是实际中,往往字段是允许存在冗余,并且不设置外键关系,往往后面新增字段是允许值为null。首先关于冗余的解释,冗余的字段往往是某一些关联表的主键id,进行查询时候用id去取另外表的数据,多数用于多表数据的处理展现,很多报表的话,可能不单单是id的记录,还有某些表的关键字段也会一起记录。新增字段允许为null,是为了你新增字段不会影响原先表的数据创建,往往后续弥补是 在新增时候进行判空处理,在逻辑层进行判断,而不是在数据库中进行判断。另外数据删除往往都是逻辑删除,某个是否删除字段的值改变,而不进行逻辑删除,因为数据一旦删除就很麻烦,如果是逻辑删除,你可以轻松找回,如果数据过多,可以备份后,删除。有备无患。