ChrisKyle's Blog

学有所思,思有所悟,悟有所行。

为什么我们要向敏捷转型? 我们该如何转型?何时开始转型? 我们团队现在的工作流程: 产品经理收集需求并整理需求文档。 产品经理、设计人员、测试人员、开发人员共同参与需求会议梳理迭代需求。 设计人员设计产品UI。 开发人员开始开发至功能开发完成。 开发人员提交测试版本应用。 测试人员测试产品迭代功能并提交测试报告。 开发人员修复bug。 产品上线。 像这种只有上一阶段完成后才能进入下一个环节的团队协作方式存在很大弊端,“阶段--门限”...

发布 0 条评论

  前一篇文章简述了项目中所采用MVP模式的实现方式,为了更好的理解项目的架构设计,本篇文章就选了项目中的一个业务功能模块做下讲解。   我们先看一下presentation层的包结构,以便对presentation层结构有个初识。 如你所见,项目以“功能“为维度划分di、module等包层级,然后再以”模块“为维度划分,比如module层级下feed、notification等包层级。 每个模块一般会有4种职责类。 这里从功能比较简...

发布 0 条评论

  前几篇博文介绍了项目的net层、data层、domain层,简述了它们是如何维系M层的,本文开始讲解项目的View层和Presenter层。至于为什么会采用MVP模式而不是MVC模式,本文针对MVP模式稍作讲解,首先要了解MVP是什么,用它能给项目带来什么收益。MVP(model-view-presener)是从经典的模式MVC(model-view-controller)衍变而来,它们的基本思想有相通的地方:Controller/...

发布 0 条评论

  本篇简述下项目的domain层,domain层在项目中担负的职责是处理presentation层下发的数据存取过程。因为data层仅是对数据存取并不包含对数据进一步处理工作,所以对数据处理应是项目的业务逻辑层职责。   在domain层,不关心数据的来源,只需定义Repository接口然后data层实现该接口实现即可,先看项目中FeedRepository的定义: interface FeedRepository { fun g...

发布 0 条评论

  通过上篇博客的简述可知,获取网络数据只需通过net层的Connector接口获取Retrofit对象,然后用其创建对应的Service对象即可发起网络请求,但是data层处理的数据不仅有网络数据,也有本地数据,其次本地数据存取又可分Sqlite存取和SharedPreferences存取等,这些存取过程都需要在data层处理,同时应尽可能的对依赖层保持低耦合。基于以上考虑,所以在data层中将数据存取抽出DataStore接口,实现...

发布 0 条评论

  有很多业内同学对软件工程半知半解,具体表现在开完产品需求会议之后,照着产品经理给的需求文档就开始进入编码阶段,这类开发人员中不乏技术水平不错的,但最终工程效率却是比较低下,这种不专业软件开发方法该如何避免,我在本系列博客中会尽自己所能做讲解。 ​ 本系列文章开篇也简单介绍了该项目的缘由,那么android工程如何有条不紊的进行呢? 必须要制定计划,监控计划并实施计划。虽然是一个人在做ikan产品,但是我深知计划的重要性,所以最开...

发布 0 条评论

  数月前在微信朋友圈发现有同学在做“微影”,就是分享一些最近上映的国内外影视剧,并收取一定金额的红包作为回报。我当时就萌生一个想法:微信分享形式有很大的局限性,如果做成独立的应用更有利于在目标用户群中传播。为了实现自己的想法,作为产品的“始作俑者”肯定要有分析产品,拆分需求及技术选型等环节,盲目实施使不得,那么产品提供哪些功能,面向什么用户,必须要先确定下来,经过一番思考后得出的产品需求总结:提供在线播放影视剧、下载影视剧,影视剧点评...

发布 0 条评论