很不容易,在四个半月多时间内,和我的team,终于完成甲方爸爸的给予的使命,之一是我接触到的比较大的项目了,总的来说,真心不易,当然,只其中颇有收获的喜悦,自己的能力和理解力都有显著的提升,编程也越发得心应手,当然,学无止境,以期望更上一层楼,概当自勉;
开始说是比较浪,其实是team是心理最慌的,到甲方公司去实地探讨对方需求,虽说开头一个星期都是调研需求,不需要动手死磕代码,但是并不是那班恰意;甲方是家装公司,主营家庭整装业务,附带建材销售,主要就是做客户的管理系统,随带员工的以及销售,库存等等,开发自然实在熟悉甲方整个公司流程的,因此这个就要求了解对方公司要求最细致话,场景,功能,流程,权限,,,功能点的对比分析,组上五个人,多次探讨确认后,终于把初期的需求基本确定下来;
原型设计期间,最是细枝末节,每个字段的确定,表结构的设计,流程图等等。不然UI无法去画原型,前端也无法开展工作。嗯,就这样又坚持了一两周,把表结构给确定了,所有的页面和字段元素都给了设计以后就着急的开始了编码。。。emmmmm。。这个阶段貌似又把需求理了一遍。。。
编码阶段就是最爽了。事实也确实如此。但是在第二阶段我并没有给全所有页面以及跳转的细节和元素,导致在编码阶段还存在漏页面和字段的情况,但是这时你的思维已经基本固定了,最最重要的一个血的教训就是文档了。需求讨论完的前几天也许会记住80%,结合当时的笔记还能基本确定,两周后记的那些笔记已经完全凌乱了,因为我发现我在不同的笔记中出现了互相矛盾的内容,可以理解为代码没有复用吧,所以在出现了两处需求相似的内容时我自己也不能确定到底哪个是最终确定的了,到那个时候,就只有问le@
项目主要框架是spring+springMVC+springDataaJPA,同时还用到了权限框架shiro,easyPOI,quatz,springSecurtymaven,sql等等。项目采用完全前后端分离,开发团队是个前端,两个后端(包括我)还有一个游走两头的大佬。
开始有心思安头疼,我负责个查询功能的实现,整体比较简单,只是对查询出的结果进行处理的过程,真的是被那十几张表弄晕le。因为分任务开发,所以在这个过程中犯了一大堆的错,思路变了又变,代码改了又改,也正是因为这样,让自己才获得了很大的收获。
项目主要模块
-基础模块(权限,组织机构,等)
三个核心模块,客户管理(核心)销售,库存
另两个扩展,财务,物流
其中最重中之重就是客户管理,最轻的嘻嘻反而是管钱的,财务(毕竟人家更不就不必要,自身本来就哼完善了)
我的货主要输基础模块部分还有客户管理部分(这部分主要是有大佬出手,我跟着打酱油,学习)。
业务流程,简单来说也简单,每个员工有开工号,联系的到的有关客户会录入系统,方便后期的客户跟进,客户邀约,通知活动等等,如果中途离职,客户成交,客户已受邀约等等,都要体现在这个上面,理一下,倒也不复杂。
关于数据丢失问题,着实比较头痛,还好面向网络编程,问一下度娘,总结出机制种解决方案,使用隐藏域,或者先获取在修改
team踩过的坑:
1.日志平常就分为操作日志(需要记录入库的),还有错误日志,关于错误日志怎么排查以及在什么地方加这种日志比较合适,说实话我也很蒙蔽,每次排查错误就基本靠猜了,实在不行才逐行打印排查,这个问题可能是因为我觉得比较烦把,所以还不太适应,以后有必要注意下这个问题。关于消息队列的问题,其实项目中本来想用来玩玩的,后来由于服务器原因没有搭环境就放弃了,但是这种异步的思想还是很好用的,而且与业务分离,还可以提高性能。
2.常用方法封装问题,假如一个项目从头到尾都你一个人或者两个人开发的话,你会发现有很多功能是可以复用的,假如多人协同开发,存在重复代码可以理解。但是全程只有一两个人开发的话,我觉得方法的提取就非常必要了,要完全杜绝重复代码。
关于数据丢失问题,着实比较头痛,还好面向网络编程,问一下度娘,总结出机制种解决方案,使用隐藏域,或者先获取在修改
3.多人配合 相似或者重复方法问题,至于这个问题,我是被困扰了很久,因为我们是两个人写的后端。代码快写完了才发现我们俩写了很多的重复代码。而且我自己写的代码都有可能重复,更别说两个人甚至更多人了,因为我没有在大公司呆过太久,所以对于平时的编码规范和意识都不是很好。所以对于这种问题,我还没想出有什么好的解决方法,估计只有规范的文档和代码注释了。。。
4.包的划分问题,这个问题看似不大,但是前期要是没有合理的规划和预期,后面挪代码还是很烦的。所以只要前期做个合理的规划,怎么分包,问题应该不会太大,但是也不能忽略这个问题。
5…接口文档及前后端沟通问题,由于接口文档都是后端来定,所以不仅要考虑到后端功能的可行性,对于复杂点的功能还要考虑到前端是否能够实现,不能只考虑后端。所以对于这种情况,最好不要擅自决定,在跟前端确认无误后然后各自开发。
6.代码生成工具
主要使用easycode,网上有很多这类的工具,但是有的并不使用,建议自己能够改善或者写一套属于自己的工具,生成适合自己的代码,这样开发起来真的很爽。磨刀不误砍柴工嘛,深有体会。
总结一下,大概的流程应该就是这样的:
首先由需求人员向项目组提出需求,然后给项目组的所有人进行需求讲解,大家一起探讨需求中各项细节的可行性。
当开发人员和需求人员一起确定需求没有问题的时候,如果有时间,可以让开发人员进行一次需求反讲,在需求和开发都确认没有问题的时候,需求便算是正式定下来了。
在设计api的过程中,前后端各自设计好以后,要召开专门的会议互相讲解,在讲解讨论的过程中达到相关意见的一致,此过程中测试人员也要参加。
在开发人员写代码的过程中,要针对自己的代码进行单元测试,同时需要写好单元测试文档,在测试的过程中不断的修改和优化自己的代码,以保证逻辑更严谨,执行效率更高,代码更整洁。
然后,在前后端各自都测试并完善好自己的功能点后,前后端人员一起进行联调,进一步确保功能没有问题。
如果上一步骤也都没有问题以后,代码就打包部署到测试服务器交由测试人员来专业的测试,进一步寻找问题,以求最终的程序更加完善。
路就在脚下,坚持走下去,以编程书写人生,使代码产生力量,用软件展现价值,让程序推动梦想!!