写了一个小工程——技术思考

来源:互联网 发布:ubuntu打开文件夹命令 编辑:程序博客网 时间:2024/05/18 00:03

技术思考

这是我做完那个小工程的第二篇总结。这一篇中,我想记录一下编写过程中的思考和技术问题。

关于接口的使用

在那个小工程中,有这样一个场景:有操作员和普通user两类用户,他们都有权利对一个数据库一个实体类进行访问,但是访问的权限并不同,即能做的事情不同。对于此,首先,编写两个不同的Dao层接口是一定的,但是,这两个接口怎么实现呢?我取了一个巧:令一个实现类同时扩展这两个Dao接口,把关于实体类数据访问操作的方法都集中到了这一个实现类内部。
这样做我认为有一些好处(所以我这样做了),但是编写过程中也觉得似乎有些不妥:
* 好处:相似的操作都由一个类来实现,这个类可以共享一些相同或者相似的代码和逻辑;此外,这也是灵活运用了接口的一种方式,操作员和普通user持有的是对应的接口的引用,而非具体的类,尽管最后操作员和user的数据操作都是通过一个类来实现的,但是二者的操作权限被接口隔离开了。
* 坏处:代码有相似,但是一定有不同,一个类负责了两块内容,总觉的不够单一职责,事实上,这个类也是我写的小工程里代码行数最多的一个类;此外我在想,在操作员和普通user,有没有可能有安全问题,通过反射,操作员和user可以取得真实的数据操作类,那里面的方法可就随便调用了。

关于前端的工程化

这是个坑,我本身没有深入了解过前端的工程化,我自己写的前端也被降级,仅使用了一些Ajax的特性。不过,我还是想谈谈这个东西。在编写JS的过程中,一方面因为我没有预先设计,一方面我对JS的继承了解的不是很清楚,这导致我的JS代码基本没有复用性,每一个页面都写一套本页面的JS代码,尽管它们完成的功能很相似,但是迫于传递参数的不同,不得已还是copy、修改,debug,可谓枯燥没乐趣。
尤其,相比于Spring的后端可以把表单数据整合成一个Bean后传到后端,对一个对象做操作,前端的数据展示都是手工拼上去的,对字段做操作,不可谓不简陋。后来问了一位接触过Vue.js的同学,向他打听前端就没有对数据比较好的操作方法?才知道双向绑定之类的概念,再次想起’前端正在重走后端走过的路‘这句话。

其他地方,我写的并没有很突出的地方,都是前人实践过的方法,我再自己走一遍而已。心得没有,疑问倒是有一些:

数据库方面

数据库设计上,问题集中在设计的松紧度上,是严格按照范式,还是在代码中判断,然后数据库仅仅负责简单地存储数据?严格要严格到什么程度,这个东西没有个最佳实践不好说。此外关于主键是不是一定要是一个数据无关的自增int,vnarchar和narcher哪个性能更好,或者更合适,字段的长度设计的时候要考虑什么因素之类的,都是摸着石头过河。

0 0
原创粉丝点击