写了一个小工程——技术思考
2017-05-13 20:19
211 查看
技术思考
这是我做完那个小工程的第二篇总结。这一篇中,我想记录一下编写过程中的思考和技术问题。关于接口的使用
在那个小工程中,有这样一个场景:有操作员和普通user两类用户,他们都有权利对一个数据库一个实体类进行访问,但是访问的权限并不同,即能做的事情不同。对于此,首先,编写两个不同的Dao层接口是一定的,但是,这两个接口怎么实现呢?我取了一个巧:令一个实现类同时扩展这两个Dao接口,把关于实体类数据访问操作的方法都集中到了这一个实现类内部。这样做我认为有一些好处(所以我这样做了),但是编写过程中也觉得似乎有些不妥:
* 好处:相似的操作都由一个类来实现,这个类可以共享一些相同或者相似的代码和逻辑;此外,这也是灵活运用了接口的一种方式,操作员和普通user持有的是对应的接口的引用,而非具体的类,尽管最后操作员和user的数据操作都是通过一个类来实现的,但是二者的操作权限被接口隔离开了。
* 坏处:代码有相似,但是一定有不同,一个类负责了两块内容,总觉的不够单一职责,事实上,这个类也是我写的小工程里代码行数最多的一个类;此外我在想,在操作员和普通user,有没有可能有安全问题,通过反射,操作员和user可以取得真实的数据操作类,那里面的方法可就随便调用了。
关于前端的工程化
这是个坑,我本身没有深入了解过前端的工程化,我自己写的前端也被降级,仅使用了一些Ajax的特性。不过,我还是想谈谈这个东西。在编写JS的过程中,一方面因为我没有预先设计,一方面我对JS的继承了解的不是很清楚,这导致我的JS代码基本没有复用性,每一个页面都写一套本页面的JS代码,尽管它们完成的功能很相似,但是迫于传递参数的不同,不得已还是copy、修改,debug,可谓枯燥没乐趣。尤其,相比于Spring的后端可以把表单数据整合成一个Bean后传到后端,对一个对象做操作,前端的数据展示都是手工拼上去的,对字段做操作,不可谓不简陋。后来问了一位接触过Vue.js的同学,向他打听前端就没有对数据比较好的操作方法?才知道双向绑定之类的概念,再次想起’前端正在重走后端走过的路‘这句话。
其他地方,我写的并没有很突出的地方,都是前人实践过的方法,我再自己走一遍而已。心得没有,疑问倒是有一些:
数据库方面
数据库设计上,问题集中在设计的松紧度上,是严格按照范式,还是在代码中判断,然后数据库仅仅负责简单地存储数据?严格要严格到什么程度,这个东西没有个最佳实践不好说。此外关于主键是不是一定要是一个数据无关的自增int,vnarchar和narcher哪个性能更好,或者更合适,字段的长度设计的时候要考虑什么因素之类的,都是摸着石头过河。相关文章推荐
- 非技术角度思考并搭建一个适用于B2C网站的搜索系统
- 一个必用的javascript框架:underscore.js - wine的思考 - ITeye技术网站
- 转载 对于技术术语专业化的思考(孟岩)(以后每次遇见一个术语,先查词典,不要被糟糕的中文译名所惑!)
- 一个必用的javascript框架:underscore.js - wine的思考 - ITeye技术网站
- 音视频编解码技术的陷阱与出路,一个研发人员的思考
- 大数据量条件下的技术选型和UX设计:引起思考的一个例子
- 又思考如何成为一个技术大牛
- 对一个大型工程的makefile编写的一点思考
- 构建一个轻量级的嵌入式虚拟平台,开发工程用板stm32 picoc解释器,大量自定义函数,sarm拓展,lwip移植,nes模拟器移植,系统优化,等等技术的融合
- DEVOPS框架的规划与设想--2016年度工程技术管理工作会议后的思考
- 我在思考一个问题:用纯dhtml技术来实现信息交流平台的应用.
- 【反传销】春节一个短暂误入传销和脱身的真实故事以及对技术的思考
- ajax技术,也是有局限的,不能跨域,即A工程的html页面发起一个ajax请求即http url请求调B工程的action(A和B不在一个域中的),怎么办?解决办法
- 关于一个S5pv210 HDMI调试帖子引发对方案以及开发板公司技术支持的思考
- 开通了一个微信公众账号,主要想分享一些自己对于行业、技术和产品的思考以及收录精彩内容给读者
- 一个web工程用到的相关技术
- 技术转行产品总结思考(二)——告诉你一个真正的缔造企鹅
- 关于克隆技术的思考
- 协作开发中的质量保证技术——并行版本控制、每日构建和交付工程
- 一个毕业生毕业前的几点思考!