APP 开发模式,架构,代码规范记录

        几年来,开发过若干项目,有单工程的小项目,也有若干组件组成的大一点的项目,对APP架构有一些自己的理解。

        首先说单工程项目。开发前期,要对整个项目有全面的了解,对未来趋势有一个大致的预计。如果业务不多,未来扩展要求也不高,可以直接写成单工程项目。单工程项目适合单人开发维护,能快速的解决问题,扩展功能。但是,一旦多人维护,就会经常遇到代码冲突的问题。项目小,建议用单工程。

        现在大多数公司都是多人团队,多人维护同一个项目。一般都是采取模块化,组件化开发模式。个人负责自己的组件,相互之间很少会有代码冲突问题。而且,个人负责自己的技术或者业务模块,能对相关知识有很深的了解。不过,有利有弊。这样不利于团队同事对其他模块业务技术的了解,若有同事离职等问题,会造成响应业务线短期的真空状态。不过,模块化开发,可以很方便的增加,减少业务线,在技术支持足够的情况下,业务的开关过程会很迅速,代码会很简洁,还是很好的。当然,模块化开发也是会有一些问题的,以我们公司的为例。

问题:

        1.代码冗余较严重。组件开发完成后会做静态代码走查,单个组件的代码冗余控制的很好。但是由于业务划分不明确,以及为了兼容性,稳定性考虑,组件与组件之间的代码冗余,资源冗余较严重。

        2.组件定位不明确。开始的时候没有业务层,技术层的明确划分,导致很多组件不伦不类,既有技术的功能,又有业务的功能。

        3.团队内部对优秀组件的使用不积极。  我们后期为兼容崩溃开发了若干个优秀组件,但是只有各自的开发者使用,别的同事很少使用。

        4.第三方组件更新不及时。  一直担心兼容适配问题,工程内部的第三方组件,AFNetworking,SDWebImage等更新缓慢。

        5.引用第三方SDK有时候会有库的冲突问题。有一些相近功能的SDK,会使用同一个framework,而且有的是直接把framework打到SDK里面,使用时就会造成库冲突。而且,有时候SDK内部类命名不规范,也会造成冲突。


解决方案:

        1.推行人工代码走查与静态走查相结合机制,坚决杜绝不必要的代码冗余问题。

        2.明确项目层级。将组件明确为业务层组件和基础层组件。.业务层组件负责实现APP业务需求,基础层组件为业务层组件提供技术支持。像电商的秒杀模块,活动模块,购物车模块,商品详情模块等,都属于业务层,像网络引擎,数据管理等都属于基础层。

        3.定期进行技术讨论,分享优秀组件。

        4.时时关注第三方优秀组件更新,即使更新版本。

        5.要多多使用继承,工程中所有控制器一定要有一个相同的父类,这样如果需要做一些特殊的处理,埋点啦,崩溃记录啦,就会很方便。

        6.减少对第三方SDK的使用,即使使用,也要多做技术预言,选择合适的SDK。


对项目架构设计的记录:

单工程项目:也走模块化,组件化设计思想

1.建议使用cocoaPods管理第三方组件,所以工程层由APP工程和Pods工程。

2.APP工程,有四个文件夹,分别是APP名的文件夹,Products文件夹,Pods文件夹,Frameworks文件夹。

3.APP名的文件夹下,有APPBase文件夹,Business文件夹,Lib文件夹,AppLife文件夹。

4.APPBase文件,存放APP级别的基础框架,类,等,文件下有BaseView文件夹,Category文件夹,BaseViewController文件夹,BaseControl文件夹,路由文件夹。路由文件夹下有对应的技术支撑组件,包括路由组件,中间件组件,大图浏览组件,网络请求组件,上传组件等等。

5.Business文件夹,包括业务基础文件夹和各业务模块文件夹,每一个业务模块文件夹下按MVC模式创建对应的文件夹。

6.AppLife文件夹下包括appdelegate文件和main.m文件和pch文件。


多组件项目:

        1.大的项目使用组件化开发架构.

        2.组件分为技术组件,技术基础组件,业务基础组件,业务组件。技术类组件要优先开发,业务类组件开发过程中,不断优化技术组件功能和API接口。

        3.工程要有自己的统一的Base类,譬如BaseUIViewController,BaseUIView,BaseNsobject等,如果要统一改一个东西,或者统计数据什么的,会很有用。

        4.开发过程中,按功能创建文件夹,同一功能的代码都放在一个文件夹下,功能文件夹内要按照MVC结构创建对应文件夹,Controller,View,UIViewController,Cell,Model等文件夹。

        5..h文件做好类的备注,方便以后查阅,方便查找。

        6..m文件,定义属性时,从上到下依次是UI属性,Foundation库相关的NSString,NSArray,NSDictionary属性,模型属性。

        7..m的实现,从上到下一次是懒加载,SET函数,生命周期函数,代理函数,自定义函数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容