博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
近期开发的一些思考
阅读量:6195 次
发布时间:2019-06-21

本文共 3218 字,大约阅读时间需要 10 分钟。

hot3.png

从七月份开始新的项目开发后,8,9,10三个月天天都忙忙碌碌,加班加点赶项目,为的是留两个月时间进行测试,呵呵通过整个项目组的努力,的确在十月底完成了整个项目的开发。

通过十一月份一个月的测试,测出的问题超乎了我们的想象,各种bug,大致可以分为以下几类:

1、项目进度赶的太紧,大家只注意确保大的功能点走通,对细节处理不够完美

2、项目组第一次进行分工合作,前后台分开开发,接口文档制定不够完美

3,前期的数据库设计有问题,导致数据库变动过于频繁,代码返工严重

4,以前做的老的功能模块,修改部分过多,也导致了重复开发过于严重

5,需求文档制定不够规范,同样开发人员开发没有太按照文档进行开发,导致测试组提出的很多bug浅显到页面的alert语句都与需求文档不一致,部分功能开发和需求文档定义功能不一致

6,项目组大部分成员开发水平有限,思考问题局限性比较大,考虑的问题,代码编写的逻辑性都不够强,导致功能大流程集成测试出现流程不通现象

...

具体的问题其实细细归纳,其实原因很多,改了将近一个月的bug,bug数量都不好意思说出来,唉自己都感觉丢人。不过这样也好,好多问题以前没注意的这次到是吃了不少亏,也学乖了很多。

谈谈通过这算是一个季度开发,自己学到了什么,那些地方需要改进的吧。

请假了一个月回到项目组,没有赶上五月份的开发,于是六月份进行了技术调研,调研了一些业界内比较有名的BI产品像IBM的cognos,SAP的BO,MISTR以及石竹关于元数据的产品MO,了解了一些关于DW的知识。以前对这一块也不太熟悉,因此总的来说这一个月可能学到真正关于开发的技术没有太多,不过对于BI方面的知识算是扫了一个盲,也算了扩展了自己的视野吧。

六月份新的项目开展了,几个月没写代码了,手痒的感觉自己都快荒废了,于是新的项目模块确定下来后,自己也是急不可耐,由于前一段时间自己一直负责元数据相关的技术,因此自己就承担了这一块的开发。说实话,这段时间算是压力最大的,好久没写代码了,公司的平台以及展现层的插件也不太熟悉了,再加上进度比较紧,真是边学边开发,不过好歹算是在一周给搞定了。那段时间算是对公司的平台,以及dorado学的比较多了,其实说实话,那次开发技术到真的没有太大进步,只是对dorado关于前后台的数据交互有了一个深刻的了解,其余的用的都是一个入门级的程序员知识进行搞定的,不过想想当时由于是一个人搞,也没有人帮忙,一些东西自己还是不太熟悉的像kettle什么的,压力挺大的,好几次晚上加班回去睡觉后,都被梦惊醒。

到了八月份项目组招进来一个项目架构师,算是把我们这些半吊子人群解放了,因为有人领导了,我们不用担心出了问题找不到人帮忙解决,事实上项目组招的这个架构师确实对我影响挺大的,跟他混的这几个月学到了不少东西。

架构师进来之后,首先整顿的是项目组内部的开发计划调整,原来的瀑布式开发模式改为迭代增量式开发,然后整个项目的技术选型全部改变,将公司内部比较封闭的技术全部改为业界内比较常用的技术如前端基本都用jquery、json、ajax,服务端用springMVC+spring+hibernate/ibatis,说实话看到这样的技术选型我们都很高兴,以前就是感觉公司内部的技术都太封闭了,怕很多东西出去基本上就不用了,而且以前学的这些各个公司常用的技术慢慢也被淡忘了。

技术选型之后就开始大刀阔斧真正的开始搞起来了,刚开始我主要负责前端的一些代码,由于jquery,json,ajax以前也都是比较偏弱的技术环节,通过这一段时间的开发,自己感觉虽然不能算上高手吧,但是写起来一般都很手顺这段时间也给项目组内部封装了很多公共的东西,像分页,树(自己在oschina里面下载的zTree用起来挺不错的),自动补全,datatables,页面分隔栏,以及很多公用的常用的js方法。

对于前端代码编写的理解发现与服务端很大的不同是:前端的功能实现的特点有三①基于事件的驱动②前端的业务功能实现一般都是类似与切换式逻辑(自己也说不清楚,但是有那么点感觉,主要就是两种或者三种动作也可以是状态进行来回的切换),③异步加载,关于异步加载个人认为一定要真正的理解异步加载,因为刚开始的常会犯一种错误,就是当一个ajax请求过后,回调函数获得的数据总是拿到外部赋给成员变量或者函数内部的变量使用,通常出现拿到的变量没有值,后来才发现是自己没能够真正的理解什么是异步加载。

对于服务端代码的编写自己总结如下:①不要轻易敲代码,一定要把思路想好,再写,磨刀不误砍采功,如果上来就写,可能写了半天会发现所有的代码逻辑都不正常。

②每一个方法尤其是service层和dao层一定要尽量想到公用性和复用性,不要为了去实现一个功能的写一个方法,例如查询,我可能第一次把两个参数作为查询条件,也可能把三个参数作为查询条件,千万不要再service层把参数类型写死,我们可以传递一个map集合,以后无论任何人调用,都只要把查询参数封装到map集合之中就可以了,这样复用性和公用性就大大增强了。

③每一个方法一定要尽可能的想到有没有更简单的方法去实现,不要把自己作为一个苦功,我们是程序员是玩脑子的,一定要多思考,例如我们截取一个文件path中的‘//’或者‘\’来获取文件名呢?我们是用if(){}else{}判断path中包含哪一个吗?不,我们可以用path.LastIndexOf("str"),然后max()函数,尤其是涉及到算法,代码的性能方面问题,一定要认真考虑,这不是为公司负责,而是为自己学技术负责。

④写代码要有大局意识,整体把握,要对当前的这个功能的影响性做一个分析,当完成一个功能或者在这个功能编写之前一定要考虑,我实现这个功能与别的功能的关联是什么,或者说我这个功能拿到整个模块中或者项目中有没有对别的功能产生什么影响,自己能不能做到模块集成测试的连调性,以及未来功能的扩展留一定余地。

⑤高内聚低耦合,封装是java四大精髓之一(封装、继承、抽象、多态)。要对功能点尽可能的进行封装,不要一个方法写个百十行,认为自己很牛B其实呢,当别人读你的代码时候,会骂死你。单独的功能点一定要抽出来。

⑥代码的规范性,通过代码走查,以及代码检查工具checkStyle的检查,发现代码规范性也很重要,常见的注释,代码的整洁性,以及简单的判断,基本上这一类属于细节方面的东西吧,平常要认真总结,多看看别人的代码挺有好处的,发现别人代码的不足才能让自己的技术进步,千万不要犯这种if(flag =true)这种比较二的代码。

⑦基础知识的累积,写一个增删改查,可能任何开发人员都会写,但是十个人可能有十个人的代码风格,

1、就是简单的MVC

2、稍微好点的可能分层开发

3、可能面向接口开发

4、写个基类把增删改查常用的方法抽出来,让子类继承

5、利用反射、泛型封装一个常用的service层和dao层的方法的小框架

.....

可见技术不同见识不同,写代码的时候思考的东西也不一样。

个人感触最深的是,做一个导入文件的校验,我用的就是大量的if else对字段进行校验,我们架构师看完当场否决,然后让我坐在旁边看他修改,看完顿时感觉实力差距甚大,他写了一个校验把java的多态,封装,继承都用上了,易用性,复用性,公用性极大的提高。

扎实的功底,会让写出来的代码可读性很高,也很优雅漂亮,搞程序的不要浮躁,一定要脚踏实地。很喜欢疯狂的程序员这本书,最后一章我才明白真正的crazy不是说有多强的积极性,多高的激情,而是能够脚踏实地的完成每个case,做好每个Demo,万丈高楼平地起!

真心期待下一个case自己能够做到更好,更强,更优雅!

转载于:https://my.oschina.net/lvzjane/blog/93722

你可能感兴趣的文章
比特率 波特率 数据传输速率 区别(转)
查看>>
原创网页新代码2e1b5de5153dc5eeca947c893bc43083
查看>>
【洛谷 P2783】 有机化学之神偶尔会做作弊 (双联通分量)
查看>>
海量语句查询代码优化
查看>>
Linux同步机制(二) - 条件变量,信号量,文件锁,栅栏
查看>>
java实现双端链表
查看>>
复习Array的一些方法的时候的灵感
查看>>
JS中的prototype
查看>>
JQuery判断数组中是否包含某个元素$.inArray("元素字符串", 数组名称);
查看>>
学习Make your own neural network 记录(三)
查看>>
PIL show() 报错
查看>>
C 程序解决实际文件案例
查看>>
mysql5.7 误删管理员root账户
查看>>
基于.NET平台常用的框架整理
查看>>
数据结构中的基本概念和术语
查看>>
inner join on, left join on, right join on讲解(转载)
查看>>
mavean的依赖传递和排除依赖
查看>>
Weekly 2
查看>>
java_Cookies_1_商品浏览历史记录servlet2
查看>>
寄生组合式继承
查看>>