记一次项目总结(2018年项目5月)

  刚开始接到这个项目的时候,我还是比较有信心的,因为基本上对接的第三方,根据以往对接第三方的经验应该不是太难,他们也提供了功能比较全的demo,但是如果这个第三方不提供相应的demo的话,那么问题也就来了,萤石云视频就是这样的第三方.

第三方

  萤石demo只提供了简单的播放和回放功能,但是XXX这个项目需求还是比较多的,有云台控制,录像,对讲,截图,预警消息,录像的检索,虽然这些在开发文档能找到相应的接口,但是在预警消息这块就找了很长的时间,最后是在萤石另外一个github上面的demo找到的,这里不得不吐槽下萤石的sdk,在SDK设计的时候居然不是为了用户方便,我只需要找到想要的东西,我不想要这个找东西的这个过程复杂化,但是萤石却把这个过程复杂化了,你要是没有通过demo去计算预警的前后时间,那你估计别想找到这个录像,还有萤石在接口上面设计的也比较复杂,比如云台控制,你需要旋转接口和停止旋转接口相互调用才能完美控制云台,至于旋转之后几秒调用停止旋转接口这个就要自己去调试了,还有预警消息推送居然没有这个功能,还要后台自己轮训进行推送.

自己的问题

前期准备

  项目比较小,就采用组件化的形式(试一试手),将项目分成了几个模块,设备模块,充值模块,信息展示模块,登录注册模块,模块之间的耦合程度很小,但是也就是这样的模块划分很依赖前期模块划分的精准性,由于是第一次使用,模块间的业务和共享视图就划分的不够准确,明明可以划分到共享模块中,却导致图标或者视图在项目中存在多个的情况,过于的沉余,影响代码的可读性.

效率和需求问题

  项目的前期预计时间是X时间,x时间页面,x时间对接口,时间很赶,虽然在代码上面已经写得相对的工整,但是在设计到视频播放的代码就写的没有这么好反而很垃圾.时间赶,思考的时间也很少,导致后期的bug也很多,客户的要求是根据萤石的界面开发,前期的需求和后期的需求差异较大,当然也是前期对项目的代码管理也不够友善,导致后期修改的地方也很多,也增加很多功能,代码也越来越臃肿,增加了业务导致模块之间的关联性渐渐变强,失去了原本组件化的优势,

新的MVP封装

  采用了新的MVP封装,省去了书写相同代码的问题,对视图,控制器,和数据进行了隔离,代码看上去更加的简洁,不会显得太臃肿,每个负责自己所负责的事情,不对其他的进行干预,类似的意思,我这个部分需要什么你给我什么就好,我不关心你是怎么生产出这个我需要的东西.但是同时也暴露出来一些之前没有考虑的问题,不够灵活有点地方显得有些沉重,需要对这个框架进行版本的迭代,以便后续的快速开发.

数据库;

项目使用上了数据库greendao,项目前期规划使用数据库来管理本地数据,但是后期发现并没有这些数据,只能保存于个人的信息数据,有点浪费.

陌生领域心态问题

第一次接触视频监控这个领域,对这个领域很陌生,加上没有准备充裕的时间仔细看萤石的开发文档,导致走了很多弯路,浪费了很多的时间,后面再回去看开发文档就明朗了很多,果然还是需要时间和静下心来看

组件化

   组件化就是一个一个模块拼凑起来的项目,模块秉承是高内聚,低耦合理念,模块间之前的联系较少,也就避免了修改一个模块的业务逻辑而动了其他模块的尴尬问题,对于组件化的感想,组件化可以抽象的想成是一个一个的想法拼凑起来的,一个想法就是一个功能,这个功能又可以单独的运行,想法多了你就需要将这些想法整理一下,不然都装在脑子里面很容易乱掉,就好像按照分类管理文件夹一样.至于是小项目还是大项目使用组件化,就好像说电脑的文件达到多少个时候需要按照分类来管理的意思,前期可能可以不要,但是随着文件的增多,后期肯定要为这些文件进行统一管理和分类,不然很容易找不到文件或者修改一处却改动到很多处,这是发展的必然过程,组件化的分类,什么公共模块下层到公共模块,什么模块需要独立出来,模块间通过什么连接,思维导图画的怎么样,模块是否分的正确,是否能确保后期业务逻辑改变而代码不大变,是否能坚持高内聚,低耦合,模块的单独运行,适合单元测试.项目中使用了黄油刀,但是黄油刀在组件化中真的是十分的困难,R1和R2包的切换,真的会把人气死,反而最初的findView才是最原滋原味的,但是这样也浪费了太多的时间,databinding一直想去尝试,但是一直没有时间(太懒了),后续有时间一定要多看看这个.

热更新

  项目中还使用了热更新,我使用的是阿里第三代的热更新,这个也是收费的,主打的也是简单傻瓜化,上一个版本和新的版本相比较,得出差异化的数据包,将这个数据进行上传到阿里服务器,然后进行向下转发,用户请求数据的时候就会自动更新数据,这个主要还是针对于线上的项目,出现一些不可避免的事故,或者修改了比较小的地方不用进行整个版本的更新,这个就是热更新的优势.当然缺点也是有的,向下分发数据速度不稳定,有的用户需要多次请求才能看到更新的结果,对视图的尺寸进行修改会造成视图分辨率会有异常的情况,不能新增视图界面,也是遵循低侵入性,新增视图界面是需要在配置文件书写数据的.

权限

  安卓6.0之后谷歌新增权限的判断,国内的厂商又对这个权限进行了一些小修改,所以在某些特别的权限会出现异常的情况,比如麦克风权限,有些手机会提示成功,有些手机(锤子手机)又需要第二次的权限判断,敏感的权限更需要多次的判断,比如发短信和通讯录权限


总结

   新的技术是需要去尝试的,但是新的技术是有风险的,前期考虑这个新技术对项目能有什么比较大的改变,有什么风险,评估下收益. ,要是遇到坑只能自行处理,要么在当前基础上面修改,要么推翻重做,这点很浪费时间,如果求稳的话,那就按照之前的想法来进行书写,没有对技术的追求,那样技术还是一层不变,新的东西推出自然有他的道理,淘汰的东西肯定有他被淘汰的缺点,诺基亚发明了智能机,却被智能机淘汰了,柯达发明了数码相机,却被数码相机淘汰,技术一直在更新,不追上就只能被市场淘汰.快速发展之后才是稳定发展的时期,不同的时期就要有不同的发展模式,

你可能感兴趣的:(记一次项目总结(2018年项目5月))