发表于: 2017-07-12 23:26:31
1 1084
复盘前半程
到这个时候,前后台公司接口写完,测试完,可以试着写一下任务10的大概,也让师兄看看我有什么理解不对的地方
一、复盘申请
任务回顾
可极简述
开发流程
主要参照ptt公司wiki上的开发流程文档,其他文档也在这里,注意有搜索功能
还需学习:敏捷开发、代码规约、开发环境约定
关键词:需求、story、原型图、表设计、方案设计、接口文档、
开发-测试-进度交流、codereview、压力测试、demo、debug
二、方案评审
主要参照原型图、需求(本应有产品讲解,没有只能看视频、其他师兄成品或项目成品需注意期数)
每一处原型图上的功能,若都可明确定义如何实现,调用什么接口?再考虑性能、开发难度、日后扩展,定义多个方案,方案设计我的理解就到这里了。
1、表设计
表数考虑,表之间关系(x对x)
字段考虑,基本字段、展示用字段、功能用字段(如特殊排序约定的字段)
字段约定,字段类型、大小等
问题:什么字段应该被定义成NOT NULL
2、接口文档
需要有rest风格接口知识
大体可分为:后台增删查改、列表、特殊(如修改状态、排序等)
前台动态查询列表、查询详情页
还应该有用户登陆相关、权限相关、模块相关、第三方api相关接口,这里直接被提供了代码
个人感觉用户相关应该也需要做比较好
请求接口:按rest风格定义即可,/a/u method什么的不做详述
请求参数与返回参数:
目前理解应与原型图、需求严格对应,最好不要给前端多余的参数,更不能少提供任何参数。
可以用一个特殊的请求参数来定义只有细微差别的页面请求
还需对请求字段是否必须稍加考虑
3、方案设计
和以上两者是相辅相成的,主要对照原型图和需求
定义每一处页面操作是直接跳转,或是调用接口,考虑请求的字段能否满足功能、性能如何,是否需要提供特殊接口,一些复合的地方,是后端主动实现,还是前端多次调用接口。由此便可以定义多个方案
一些特殊操作的实现考虑,例如公司冻结,联动下属职位下架。
三、开发前期
这里指直到第一个接口测试成功
1、SVN
项目目录,可修改配置文件进行用户组管理、权限管理
branches:debug分支,因为归并的一点难度和混乱,一度不被接受。如果使用,应该每日与trunk归并
tags:阶段版本目录,相当于存档,不会对其中内容改动
trunk:实际开发目录
每次commit之前需要update项目,如果有冲突,需要协商何处用哪位的版本
目前理解每日commit一次,或有特殊情况commit
2、maven多module项目
我的搭建步骤,仅供参考,IDEA
搭建基础项目结构:
根项目root,只需一个pom文件
core、service为基本maven项目,admin-web、home-web为maven web项目,皆为root子module
core需被加入其它三者的dependency。
tips:运行root项目的mvn:install可让其它项目用上core
测试代码生成的service:
如何代码生成见下文,将代码生成的src放入root项目,运行其中test成功
这里需要配置数据库,配置maven私有仓库、镜像在.m2 setting.xml中
pom文件还是直接用其它现成项目的比较好,因过于复杂,版本、exclude等
tips:很多bug都是引用包缺失或者冲突引起的
暴露service并加入其他被提供的代码:
代码分入core和service中,运行service中的server即可
需要配置tuscany的composite文件等,详情已忘
test中@before第二部分测试能通过即完成
controller层第一个接口:
先return hello world,需要配置spring的dispatch-servlet,web.xml,主要因为是spring3版本,与4有些不同
随后写一个简单的接口,比如根据id查询一条数据,返回json
需要配置SCA的properties,code与message对应用的bean及properties
3、代码生成
SVN下载common项目,运行其中demo项目test 配置xls位置,运行后代码生成在根项目src
xls表格式在common项目资源中有示例
端口、项目名需要修改
问题:索引对生成代码的影响不明
sql语句自动生成的将是根据条件获得ids(List<long>类型)的方法,所以即使不写,其实生成param动态查询util也可以满足要求,可以把常用的比如根据公司id查询tag表写一下
四、就到这里
项目搭建步骤那里肯定会有各种各样的bug,现在也记得不是很清楚了
然后接下来就写复杂些的接口咯,返回数据是通过jsp组装成json的
请求数据get是用普通参数来请求,put等其他方法用json数据格式:这里不完全确定
上面还有两个问题:
目前我认为新增数据时一定会被提供的参数NOT NULL,及id,创建更新时间人NOT NULL
索引什么时候需要我们是知道的,离散且常用的数据。似乎只体现在数据库建表文件中
评论