第二天上班,同样的要赶早班车,有点累,眯上眼睛。到了附件的公交站,差不多也八点四十分了,赶忙感到办公室,打卡要紧。打完卡,有点饿,没买早餐,忍忍吧。打开qq、微信,想着今天要干什么好呢,运维发给我帐号了,不管什么,下载项目先吧。突然发现自己对svn不熟悉,下载个svn工具,按部就班的,也还行,项目也下载好了。
用idea打开项目,indexing,恩,老旧的项目,配置tomcat吧。配置好了,发现并不能部署,idea并没有检测到部署方式,想想为了项目统一,换ide吧,便下载了比较熟悉的myeclipse10。还是原来的味道,这ide,导入项目。先把项目启动吧,看了一下配置文件,把数据库配置改了,创建了目标数据库,发现该项目使用了hibernate,所以打开hibernate的自动建表。运行,恩,报错了,发现连接不上数据库,这是什么道理,赶紧百度一下。花费了一些功夫,发现是mysql8.0与jdbc驱动版本的问题。脑子里出现了两种解决方案,第一,就是更换新版的jdbc驱动,第二呢,就是重装mysql,使用5.6版本。我使用了第二种解决方案,原因很简单,就是该项目的历史基础,况且,该项目没有使用任何的软件管理工具,这也是一个十分不合理的地方。部署成功了,表也建立了。但是没数据呀。于是,从目录结构中,找到了脚本,运行吧,太多了,总共23个文件夹,于是,想投机取巧一下,写了一个小程序,把目标目录下的sql文件路径写到一个文件中,然后source一下。可是,脚本却报错了,我意识到脚本的顺序需要维护,这就不得不一个个慢慢导入了,经过苦力一般的劳动,导入了。
输入地址,登录系统,总算看到系统了。系统界面很简单,boostrap为主,没有什么新颖,但是,可以理解,本来这种系统并不需要多么华丽,且历史基础在那里。简单了了解之后,我觉得看源码了,本来想看文档的,但是并没有提供,我认为这是开发者的一个前期疏忽,当然,这也是后面的铺垫。大概看了一下实体,挺多的,大概四十个实体吧。
从实体看吧,可能我眼界低吧,不是很懂为什么要给实体给创建抽象类。看dao层吧,恩,很简陋,就增删改查吧。而service层和controller层看吧,这两层操作数据库代码很多,我可以认为他dao层基本没用,而使用数据库的方式也很诡异,有时候用sessionfactory,有时候用statement,resultset也是随处可见,可以说无力吐槽。真的,我可以认为这个一个没有经过严格规范的代码结果,这种是很恐怖的,这就意味着继任者需要花费更多的时间的理解代码。并且,代码中最最恐怖就是没有注释,实体类没注释,我可以说我根本就不知道User和TUser的区别,注释给得很明确,这段注释是myeclipse自己给出的,没有任何意义,唯一有参考价值的就是hbm的配置文件中,某些字段写了comment,但是杯水车薪。从功能上讲,这样的系统能够运行已经很不错了。
从整体的代码风格,我看出了至少三个代码风格,风格迥异。我不知道为什么要在controller使用jdbc开始操作数据库,sql语句的拼接随处可见,可是不安全的,我甚至看到mybatis出现的原因了。不可否认,操作是符合业务需求的,但是代码规范确实不允许的,什么连注释都没有,这也是不可原谅的。
可以认为,这个一个典型人员流动大的公司的系统,公司规模小,所以没有codeView这个环境,没有人去检查代码是否合格,因为从产品的角度,我会节约成本,而codeView并不符合这一结果,同时,这给我一个信号,就是这家公司并没有长期经营的计划,可能,这个系统是一个奇葩,但我会认为这个一个普遍的现象,并没有对规范进行约束。