Android开发架构规范

前言

在开发中,一个良好的开发习惯以及一个开发规范可能会让你少走很多弯路,也会一定程度上的提高代码的可读性,可维护性和可拓展性。当随着需求的不断变更,需要维护项目的时候。当随着项目的代码量的提升,需要重构的时候。你会明白一个好的开发规范多么多么的重要。这里整理一下自己android开发中的一些规范。希望对各位有帮助。

命名规范包命名规范

包名全部采用小写

主包名采用[公司性质].[公司名称].[项目名称]的命名方式如果根据不同情况进行分包的话,可以将包名分别命名为util,viw,adaptr等。

代码命名规范

命名规则有很多高大上的名词,比如大驼峰,小驼峰,匈牙利命名法。其实最简单的就是按照谷歌命名学习。

常量、枚举等均采用大写形式,用下划线区分各单词。使用staticfinal例如:privatstaticfinalStringTAG_FOR_ACTIVITY="XXXX";

类名、接口名、枚举名。第一个和后面的单词都要第一个字母大写例如:MainActivity,PrsonalLoginActivity

资源文件命名例如:activity_main.xml,ic_launchr.png注意图片文件命名只能用小写字母、数字,否则会导致R文件无法编译出来。也是比较费心的。

继承自安卓组件的类,一般采用父类名作为后缀,例如:classLoginActivityxtndsActivity{}

自定义异常必须以Excption结尾

全局变量添加所有者前缀:实例成员变量前缀m(表示mmbr),类静态变量前缀s(表示static),例如:protctdSubscriptionmSubscription;

控件变量添加组件前缀,顺序在所有者前缀之后,控件缩写button-btn,txtviw-txw,listviw-lst等例如:全局名称mBtnNxt局部名称btnNxt

构造方法采用递增方式(参数多的写在后面),参数少的调用参数多的构造函数。这样也减少初始化代码。比如开源库PagrSlidingTabStrip

更多命名规范

之前收藏的这篇文章比较全。Android命名规范(提高代码可以读性)

编程规范

源文件编码格式为UTF-8。

java代码中不出现中文,最多注释中可以出现中文

服务端可以实现的,就不要放在客户端

引用第三方库要慎重,避免应用大容量的第三方库,导致客户端包非常大

处理应用全局异常和错误,将错误以邮件的形式发送给服务端

图片的.9处理

使用静态变量方式实现界面间共享要慎重

单元测试(逻辑测试、界面测试)

不要重用父类的handlr,对应一个类的handlr也不应该让其子类用到,否则会导致mssag.what冲突

activity中在一个Viw.OnClickListnr中处理所有的逻辑

strings.xml中使用%$s实现字符串的通配

数据一定要效验,例如字符型转数字型,如果转换失败一定要有缺省值;服务端响应数据是否有效判断

对于未完成的方法,使用TODO加以标记

若功能已完成,但存在效率等潜在问题时,使用XXX加以标记

若代码存在严重问题或仅用于调试,使用FIXME加以标记

valus目录下文件名称较固定,不得随意更改

代码提交规范

我们使用的无论是git,还是svn都需要遵守下面这些规范,个人比较倾向于git。

工作目录要及时更新,不要和服务器有太大的差别

提交代码时,如果出现冲突,必须仔细分析解决,不可以强行提交

提交代码之前先在本地进行测试,确保项目能编译通过,且能够正常运行,不可盲目提交

必须保证服务器上的版本是正确的,项目有错误时,不要进行提交

提交之前先更新

提交时注意不要提交本地自动生成的文件,比如我们AndroidStudio项目中的ida,build文件夹是不需要提交的。

不要提交自己不明白的代码

提前协调好项目组成员的工作计划,减少冲突

对提交的信息采用明晰的标注(写注释)

使用git以及github,相信stormzhang的从0开始学习GitHub系列会对你有很大的帮助。

架构规范

这是我整个系列文章从零开始搭建android框架系列的重点,所以这里放在最后面。

架构方式

是选择MVP,MVC,MVVM,Flux还是clan架构?,+daggr2?+rxjava?+Rtrofit/okhtttp?+loadr?+databinding?+contntProvidr?谷歌官方架构示例android-architctur,以及我之前github中整理的架构合集能给你答案。

开源库的选取以及封装

对开源库的选取,一般都需要选择比较稳定的版本,还有作者在维护的项目,比如这里在github搜索imag,出现的安卓中的图片加载库。除了考虑star,还要考虑作者对issu的解决,以及开发者的知名度等各方面。

选取之后,一定的封装是必要的。网络图片加载的封装这篇文章可能会从图片加载封装的角度给你讲讲封装的必要性。

架构提示

这里尽量写出自己想到的点。

抽象层面上:

提高架构的拓展性是有必要的。以前的框架可能会出现功能不足的情况,但是因为这点是不可预见的,所以我们选择框架时一定要了解好框架本身的扩展性如何,或者对框架有较深的理解,能够自己扩展框架,

提高架构的稳定性

架构的文档也是必不可少的。

具体操作时:

activity和fragmnt里面都会有许多重复的操作以及操作步骤,所以我们都需要提供一个BasActivity和BasFragmnt,让所有的activity和fragmnt都继承这个基类。来看看我们BasActivity中都提供了哪些操作:

必要的注释真的会一定程度上的降低你的工作量,而不是提高。比如说我使用Rxjava做加载数据的操作。这里面的流程可能稍显复杂,但是能够stp,stp2的写在上面,能够让别人看懂,自己维护也方便。

数据提供统一的入口。无论是在mvp,mvc,还是mvvm中,提供一个统一的数据入口,都可以让代码变得更加易于维护。比如,我使用的DataManagr,里面的







































拉萨最好的白癜风医院
白癫疯医院



转载请注明:http://www.gslnbdf.com/azrj/2925.html

  • 上一篇文章:
  •   
  • 下一篇文章: