发表于: 2017-11-23 21:53:06

1 691


一.今天完成的主要事情

1.总结梳理复盘项目,准备进真实项目PPT

       1.     复盘项目期间的学习总结

       具体项目:聚金融项目主要是一个由线下转到线上的P2P金融理财项目,主要负责方案设计,数据库表结构的设计,撰写接口文档,以及后端前台功能的代码实现.

       整个项目的难点有以下几个方面

       一是需求理解.主要体现在金融项目的专业性程度高,理解需求有一定的困难,最后通过老大讲课以及网上查阅相关资料彻底理解需求.

       二是设计方案,接口文档,以及数据库表结构设计的具体标准.一开始对方案设计中要包括的内容,粒度如何,数据库表结构设计包含哪些内容,有哪些原则和注意的点等没有清晰的概念,,尤其是重要的sql语句这一块没有清晰的认识,结果浪费很多时间.最后通过一是观看老大和培宇讲课视频,二是通过方案评审的反馈以及事后的反思,解决了这一难点.

       三是部分功能的实现逻辑比较复杂,比如前台的续投是否生效和产品上下线之间的关系,产品的回款计划如何计算,用户投资的产品如何自动付息和付本金等.这一部分一是通过提前写demo测试思路和算法,比如生成产品的回款计划.二是通过询问老大解决,比如跑批任务.

       四是项目整体要求非常严谨.金融项目涉及到钱,非常敏感,所以要求算钱的时候一分都不能错,而且对异常的处理也有严格的要求,日志的处理要严格

       总结:现在回顾整个复盘项目,离真正的严谨的,能够上线的金融项目还有一定差距,比如像支付,抹零账户,人,证,卡,手机号校验,容错备份等难点功能没有实现,代码质量也有待继续提高,但是自己也学到了很多做项目时必须要会的知识.比如方案设计,接口文档,数据库表结构的要点,接口中需要注意的规范,日志怎么打,第三方服务怎么调,如何封装等.

 

       2.     学到的技能

       方案设计的要点:方案设计一般按照需求story的粒度进行,先说清楚项目整体架构,再通过文字描述清楚这个story如何实现即.,如果是比较简单的实现,就可以简单的一句话带过,如果是比较复杂的功能实现,要描述清楚实现方法,如果有多个方案,列出所有方案,并且描述清楚各个方案之间的优劣.

       数据库表结构的设计要点:数据库表结构是方案设计环节中非常重要的一个环节,原则上如果方案评审通过之后,数据表应该要能够直接用于生成代码,所以,首先要注意的点是如何从需求中将数据抽象出来,并且找到数据和数据之间的关系;其次是表结构的设计,数据和数据之间的关系一般分为三种,一对一,一对多,多对多,不同数据关系,表结构的设计上也有区别;再有就是尽量将同一类型的数据放在同一个表中,增加表的复用性,最后是一些需要注意的细节,比如类型,长度,是否为空的选择,注释中说明字段作用,提供两个假数据测试时使用.除此之外,由于使用公司自己的框架,所以要再数据表中将一些常用的重要的sql语句提前写好,要注意写在表中的sql语句一定是可以走缓存的,所以一般只写通过条件查ID的sql,而且还需要写全面,因为代码生成之后再增加或者修改sql,不仅步骤繁琐,而且还非常容易出错,经常会浪费很多时间

       接口文档注意的事项:接口文档中是方案设计中最重要的一份文档,也是前后端交互的窗口,所以接口文档如果写不好,会严重影响开发效率.接口文档一般按照模块划分,比如前台,后台,支付等,接口采用restful风格命名,包含的要素有字段约定,接口的路径url,具体的http请求方法,入参,出参,备注等.要注意接口中的字段尽量和数据库中保持一致,这样可以避免二次映射,最主要的是,接口文档一定要保持更新,时刻和实际接口保持一致,更改接口文档时要通知到前端人员.

       公司DAL框架的使用,调试以及代码生成:DAL框架是公司自己开发的一套代码生成的框架,通过这个框架,我们只需要提供一份规范的excel表格,就可以帮助我们生成80%以上的代码,大大减少重复工作,提高开发效率.使用公司的DAL框架首先就是要按照规范写好excel数据表,然后按照service依托excel数据表生成代码,代码生成之后,将代码复制到相应的项目结构下,修改几个配置文件,然后跑service的测试,如果service测试能够跑通,说明代码生成成功,如果出错,一般不是excle表格中的书写没有遵照规范,就是配置文件中有错误.

       接口中代码规范.首先要打印入参,然后对入参进行校验,校验通过后再开始业务逻辑的编写,对于接口中的日志,要在关键的操作后记录好日志,但是也不能过多的记录日志,否则会非常影响性能;同时日志内容中要能简单描述清楚业务是什么.一个好的方法是一个接口写完之后,跑一遍,然后自己看日志记录,看自己能不能通过日志清楚程序运行到哪一步.


       3.     对项目开发流程的理解

       需求讲解:要知道为什么这么做,不清楚的地方及时沟通,并且第一时间判断需求能不能实现,大概知道难点在哪

       方案设计:包括DB设计,关键sql语句,前后端定义接口,核心算法实现,撰写接口文档等,有多种实现方案的部分,写出所有方案和优劣之处.

       方案评审:开发组对设计的方案进行评审,敲定最终的方案.

       拆解task:方案评审之后要拆解task,在禅道上根据需求优先级的顺序拆解task,粒度要细到每一个需求的具体实现步骤,拆解时间要在0.5至4小时之间.同时要注意每天要及时在禅道上更新task完成情况,这是项目leader把控项目风险的重要依据.

       提供假数据:方案评审完之后,首先是搭环境,包括服务器和代码生成,这些做完之后第一步就是提供假数据,因为敏捷开发中没有前后端联调的概念,所以从提供假数据时实际上前后端就一直在持续集成

       晨会晨报:晨会和晨报从需求讲解完就开始,但是在实际开发阶段特别重要,晨会中需要所有开发人员相互碰头,说明昨天完成哪些,今天计划完成什么,存在哪些问题,所有这些评判的粒度都是需求story,晨会最重要的结论是是否有延期风险

       性能测试和codereview

       Demo

       打tag,

       开发阶段基本完成

       Bug修复流程

       所有的bug,被指派的人员要在两个小时内确认,如果不是自己的bug,找各组的leader,另行指派

       如果线上发现major以上级别的bug,要放下手头的一切工作,两个小时内修复该bug


4.     对职业素养的理解

第一部分.态度

第一节,责任.当项目出现问题的时候,为这个项目着急,想办法解决问题的人一定是你

第二节,结果.公司做事会为努力鼓掌,但只为结果付薪.过程中再努力,最终却没有取得有价值的结果只是无效的努力,所以做任何事情先明白为什么做这件事,然后规划好自己的时间和所需要的资源,以目标和结果为导向,这样的努力才有价值.有两个要素,一是反馈,遇到问题及时上报解决,二是主动,无论在什么时候,遇到困难,解决问题都是公司希望人才能做的事情

第三节,流程.提高工作效率的方式.所以在做项目的时候一直在强调遵守流程.

第二部分.落地

第一节,细节.把工作内容更加具体化.

第二节,条理.要把要做的事情分清轻重缓急,按照重要和紧急程度来做.尽量先做重要但不紧急的.

第三节,沟通.跟别人交流自己的工作进程,注意有效性,及时性,主动性.能当面说的不要打电话,能打电话的不要用qq,能用qq的不要发邮件.沟通要明确对方是否真正的了解你的意图,因为人和人之间会存在隐藏偏差.要主动沟通.

第三部分.拓展

第一节. 价值.你必须要能知道自己能够给公司创造多少价值,必须不断学习

第二节. 团队.每个人在团队中都有自己的分工,任何一个人出现问题都会影响团队整体的成果

第三节. 分享.


5.     进真实项目的期望

第一,对方案设计,接口定义,项目流程,以及java技术的各个知识点掌握的更加扎实

第二,培养自己在项目中控制风险的能力.


2.听老大讲优雅代码之道的讲座

一共有12个部分,今天只讲了6个部分

(1).三个小原则

一是一个函数的代码长度不要超过50行,如果超过就需要重构,最好在20/30行之内

二是controller中不要有私有方法,私有方法应当要么抽取出来当作util,要么放在service中当作服务

三是什么老大也没说...

(2)数据和代码分离

数据我个人的理解在一个项目中,前端穿进来的参数是数据,数据库中存放的也是数据,而代码就是我们对数据的操作,再比如做饭是一个项目,食材就是数据,而做饭的过程就是代码,具体到一个函数中输入和输出是数据,中间对数据的处理过程就是代码.要求函数的处理过程中尽量不包含初始化数据.

(3)MVC

MVC是模型,视图,控制器三层架构,平时已经说来很多,这里不再多说

(4)分层

分层的目的是屏蔽我依赖的服务的内部实现细节,比如Dao,Service,Controller,前后端,web,service这些都是分层思想,计算机中分层无处不在,比如Dao,向service层屏蔽了对数据操作的细节,service只需要知道dao层能够增删改查数据即可,至于dao层是如何操作的,service不需要关心

(5)先简单化,再聚合

这是针对多个服务时的情况,我们在项目中会划分一个个服务,如果有两个服务总是一起出现,那么可以考虑将这两个服务组合在一起,但是这个步骤应该在将所有服务都部署好之后,同时发现两个服务分开对性能影响比较大时才考虑将两个服务聚合在一起,所以说是先简单化,然后再聚合.

(6)三种层次的抽象

private方法是类级别的抽象,service是当前项目级别的抽象,而util是全局通用的抽象,util中的方法应该和业务没有关系,放在哪个项目中都能用

三.遇到的问题

暂无

四.收获

以上

五.项目进度情况

复盘demo已过,暂无项目

 



返回列表 返回列表
评论

    分享到