黑马程序员技术交流社区

标题: 【南京校区】一期学员告诉你:电子商城项目你必须知道的 [打印本页]

作者: 蓝鲸小潘西    时间: 2016-11-13 15:22
标题: 【南京校区】一期学员告诉你:电子商城项目你必须知道的
战场上的角逐、晚餐桌上的畅谈

从一知半解到专业只需要半年,但是背后辛苦的付出不是常人所能想到的,转行的痛苦、生活习惯的纠正、迷茫、生活的压力是每位学员都有可能遇到的;南京一期小伙伴历经五个多月的奋战终于走进通向黎明的小道,经过一周不懈的努力,小组合力完成电子商城项目,每每看着学员辛苦的背影、听着噼噼啪啪的不停敲着键盘、悉知PM深夜整合小组成员的代码,作为老师,我们心里万般的心疼;导师协助每小组,还有专业班主任张蕊老师进班和1期学员近距离的讲解下人事方面应该注意的细节,看着小伙伴对知识渴求的眼神,小编的心都化了;


下面给大家讲解下你们最关注的电子商城项目—红孩儿,分享下1期学员的经验:

师哥一分享:
一、在进行这个最终项目前,组长需要分配组员任务、职责范围,具体工作包括:前期准备,如:SVN版本控制仓库建立,Tomcat服务器的搭建等;编码准备,如:标识符的命名规范,项目分包等;最后就项目如何降低各模块的耦合度,我们讨论出一套可行的项目框架方案。
二、在搭建好Tomcat服务器和SVN后,组长在Android
Studio中创建好项目,搭建好项目框架后,各组员就进入了正式编码工作。因为是第一次,进行联合实战开发,所以我们小组在项目进行中还是遇到了很多问题。
比方说,在项目初期,组长在提交创建好的工程时,应该要把AS根据本地环境生成的配置文件等忽略,否则会导致组员下载导工程时因编译环境不一致失败;团队必须使用相同的开发环境和同一版本的开发工具;在分配IP地址后及时和组员沟通,传达消息,避免冲突;统一规定各模块如何进行视图及数据的测试等等。
在项目进行中,我们每天会就昨天的工作进行总结,对于需要相互调用的模块之间的接口,各自负责的组员会进行沟通,方便后期的联合调试。为此,我们把每个组员的任务量,以“页面跳转图”的形式固定下来,辅以相关标注,保证让每个组员明确自己的工作内容,提高了效率,其中一位组员的工作内容如下图所示:



三、到项目后期,我们基本上按照预期进度完成了电子商城项目的联合开发,也进行了各模块的测试,尤其测试了模块之间的接口,结果还是取得了比较好的成果。
师哥二分享:
首先项目按照模块分好了各人的职责,然后各自开始开发自己的模块,遇到的最大的问题并不是每个人的模块有多难,而是协同开发的时候,连SVN都用不好,最后我们2个组员充当了”人工SVN”。效率低下,不过这个也没有办法,平时并不怎么用SVN.接下来是每个人的模块。
1.搜索模块
主要就是数据列表展示,使用Okhttp拿到Json解析就可以了,跳转商品详情只需要给小伙伴传送一个id即可。
2.登陆和注册模块
按照接口文档想服务器发送请求,在返回结果进行解析,如果是注册,成功后提示登陆即可。如果是登陆返回的userId需要存储本地,已便于其他界面进行登陆情况的判断。
3.促销快报
(1) fragment的切换动画;transaction.setTranstion(系统自带了三四种FragmentTransaction点进去挑就可以了);
(2) eventBus3.0 接收sticky 需要使用这样的注解: @Subscribe(threadMode = ThreadMode.MAIN,sticky = true) ;
(3) eventBus传递消息很快,在使用条件语句去控制的时候,要注意条件如果与eventBus传过来的数据有关系的话,要注意这个条件成立的时间;
(4) spinner没有onItemClick事件,使用的是onItemSelected事件;
(5) 在使用json解析出来的集合时,要集合进行非空判断,否则可能会因为服务器数据的错误导致空指针异常然后crash;
4.主页模块
(1)子线程获取数据有延迟,应在子线程中获取数据后再去操作所需数据,如更新UI界面,应在子线程中获取数据后用handler发送消息通知更新UI;
(2)界面打开时不联网也应可以打开界面,布局时使用静态不联网的数据布局,之后联网获取到数据后再去更新UI;
(3)Fragment不能重复commit,应先退栈再去提交;
(4)fragment  replace的时候不走ondestroy 走ondestroyview,在这个方法中移除handler中的消息避免重复发送消息出现奇怪的现象;
5.购物车
(1)由于服务器get请求拿不到数据,采用读取本地集合的方式拿数据,商品详情页面点击加入购物车,把商品bean加入集合,购物车页面直接读取集合拿数据;
(2)加入购物车通过eventbus把商品数量传给结算页面,结算页面显示加入的商品;
(3)选择地址页面通过eventbus把地址List的position传给结算页面, 结算页面显示选择的地址;
6.分类模块
(1)任务模块初入手无从下手分析,在项目经理帮助下,分析该模块的技术细节,每级分类Fragment跳转时通过EventBus进行传递,点击父item时传递id和name,id用于获取下一级分类的类别,name用于实现下一级分类Fragment的头标题设置;
(2)在item的点击事件中,要先判断被点击的item是否为叶子节点, 如果是叶子节点后续无数据再向下传递时会跳出空白.不是叶子节点则通过BaseFragment内它提供的方法实现Fragmen的向下级跳转以及本Fragment的加入回退栈;
(3)跳转到下一级Fragment时添加判断,判断EventBus是否注册,如果没注册则注册EventBus,防止EventBus跳转时的重复注册;
(4)开发前没有实际团队开发经验,没有确定统一的图片加载框架,在分类模块开发过程使用picasso图片加载,发现Glide图片加载框架和picasso产生冲突,两者语法一致,故统一确定采用Glide;
7.限时抢购
倒计时实现时,开始直接在Adapter用CountDownTimer,出现时间显示混乱的情况,后来在Fragment界面使用Timer和TimerTask,在TimetTask中获得所有Item实例,并进行倒计时,同时Adapter. notifyDataSetChanged();最后每隔一秒执行一次timer.schedule(mTask, 1000, 1000);
8.推荐品牌
(1)ListView嵌套GridView,ListView的Adapter中直接将嵌套的GridView控件setAdapter即可;
(2)GridView根据服务器返回数据自动调整高度,自定义GridView重写onMeasure方法:方法内部如下:         
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
  super.onMeasure(widthMeasureSpec, expandSpec)。

小组项目完成啦~~接下来当然是我们嗨的时间啦~~班主任精心为学员准备的小礼物,礼轻情意重—辣条!评比出“最佳团队”、“最强王者”奖!恭喜南京黑马程序员1期学员电子商城项目圆满落幕!


换个沙场、再战!来来来,先上三盘肉!想不想吃啊~~想的话可以来南京校区哦!!!男生在一起只有一个字:喝!喝!再喝!感谢导师、感谢就业指导老师、感谢班主任、再次感谢同窗的兄弟!



最后来一张大合照!猜猜我在哪里啊~~Happy ending



作者: aA772807986    时间: 2016-11-13 15:50
很有道理!
作者: 陈小驴    时间: 2016-11-13 21:47
必须顶!加油,南京一期娇子们!
作者: 遗失的世界    时间: 2016-11-14 10:15
加油!加油!南京棒棒哒!
作者: 橘子哥    时间: 2016-11-14 10:25
从这个角度看,最后一张图像是在船舱里!
作者: 蓝鲸小潘西    时间: 2016-11-14 15:46
aA772807986 发表于 2016-11-13 15:50
很有道理!

是滴呢~~
作者: 蓝鲸小潘西    时间: 2016-11-14 15:47
陈小驴 发表于 2016-11-13 21:47
必须顶!加油,南京一期娇子们!

谢谢雪峰哥
作者: 蓝鲸小潘西    时间: 2016-11-14 15:48
橘子哥 发表于 2016-11-14 10:25
从这个角度看,最后一张图像是在船舱里!

哈哈哈,很有艺术感
作者: 蓝鲸小潘西    时间: 2016-11-14 15:48
遗失的世界 发表于 2016-11-14 10:15
加油!加油!南京棒棒哒!

必须棒棒哒
作者: FooTyzZ    时间: 2016-11-16 17:57
哎呦,不错哦

作者: 20161223    时间: 2017-1-19 16:40
真羡慕,且行且珍惜




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2