其实很多团队开发中很多人都是负责自己的模块,做完了事,自己做的尽量简单话能用就行,不需要考虑过的以后的事,反正是打工的,是拿死工资的,项目做得好不好,和自己无关,其实这在很多团队中都或多或少有这样的人,当然这是不对的
先来说说项目本身的架构,maven配置各个模块,使得模块化并且解耦,后台,接口,单点登录,消息队列,定时服务,都是作为单独的服务去运行的,DAO层,service层同样也是通过maven配置的子模块(配置方面可以去我的博客参考),目前订单服务没有拆分,但是肯定要考虑以后拆分后的事。
那么问题来了,我们提供了<查询订单列表接口>以及<查询订单详情接口>,这都是单表查询的,再提供给jsp页面的时候,展现后,有些数据,例如用户数据等是可以通过ajax异步调取,这样的好处是大并发查询的时候减少数据库压力,把部分压力放在客户端,可以通过阿里巴巴的数据源监控到查询数据库的时间,如下图
这么做是没有什么问题的,但是在手机端上的处理被要求在展现的时候需要一次性把所有数据全部查询出来,那么现在只有用户数据,以后有积分数据,评价数据,这些是不是也要多表查询出来呢,如果多表,那么db查询效率肯定降低,为了方便自己要使用某个字段,而破坏软件设计原则,这样是不可取的。并且,在以后做订单服务拆分的时候,那些多表关联太耦合了,还不好拆,这就跟你在装修房子的时候一样,好的师傅是会把很多地方解耦的,以防万一以后维修的时候方便。
再者,图片上传组件是一个单图多图通用组件,不论是否成功,会有一个状态码对应一张图封装在各自的json result中,在ajax异步上传的时候,只有判断单独的状态码是否成功就可以展示或者提示错误,在做jsp页面的时候是没有问题的,但是手机端确被要求,只要有一个错,就全错,这样就不得不修改整个接口,包括js,这样是不可取的,组件是通用的。
再说说第三点,这个是我要吐槽的,在做form提交的时候把所有数据通过get方式提交,没有也就算了,关键是连<form>都没有,是通过js拼接的,当时我傻眼了,事情发生在大半年前,始终困扰我久久不能散去啊有木有。。。虽然字段不多也不能这么做啊,还有个textarea文本啊。。。这个是绝对要吐槽的
最后说说缓存吧,某家做云计算的公司当时在做项目重构的时候,项目总监提出了公用静态数据的保存,浅白点说就是使用缓存保存一些数据,比如数据字典,省市区这样的公用数据,我当时提出使用redis,并且可以在后台进行管理,但是我得到的回答是“No!”,项目总监提出使用application,在每次在项目启动的时候把所有静态数据往这里面存,我的天呐!
我不知道为什么要做这样的设计,况且自身还是做云计算的!我就不多吐槽了。。。
所以说在做软件开发设计的时候一定要设计好,设计好后就不能随意更改,开发项目是为项目本身,为企业获得价值,其实就是提升你自己的价值以及技术,好了不多说了,看官们轻拍。