Android 代码规范-让开发事半功倍

    xiaoxiao2021-04-01  32

    转载自:http://www.toutiao.com/a6407946365952311554/?tt_from=mobile_qq&utm_campaign=client_share&app=news_article&utm_source=mobile_qq&iid=9400134503&utm_medium=toutiao_android

    概述

    编码规范对于程序员尤为重要,可以有效的帮助我们进行code review,提高代码的可读性,让其他人更快的理解代码。

    一个软件的生命周期中,80%的花费都在于维护以及新功能的迭代,很多的时候都需要阅读代码,读自己以前写的代码,读别人写的代码,这样规范代码的优势就显示出来了,符合规范的代码可以让人简单快速的理解理解代码的意图。

    代码规范先从命名规范开始,Android的命名规范主要涉及:

    Java源代码

    xml文件

    图片等资源文件

    先从Java源代码开始说起,要说Java源代码不得不先说下包名的命名规范。

    正文

    1、包名

    Android包名的命名规则,Andorid的包名一般采用域名的反转,单词全小写。

    比如域名为www.example.com的包名为com.example,省略www。

    包名开始是一个顶级域名,比如com,cn,org等,包名使用.做为分隔符。第二位一般是二级域名,也可以根据不同机构各自的命名。

    后面的命名可以用部门,项目等进行区分(也可以没有),例如:com.example.project

    在项目内可以根据功能不同,按照模块划分不同的包名,com.example.project.user表示用户模块。

    也可以根据层级的不同而划分不同的包名,比如:com.example.prokect.activity,就是Acitivity相关的包。

    当然也可以在不同层级里面再按照模块划分包名,比如:com.example.project.activity.user,表示和用户有关的Activity。

    总结,包名一般是以反转域名开始,后面跟有项目名称(缩写,也可以没有)。

    后面可以采用的区分包名方式:

    按照模块

    com.example.project.user

    com.example.project.activity.user

    按照层级区分

    com.example.project.activity

    层级下也可以在区分模块

    2、类和接口

    类名是一个或多个单词组成,采用大驼峰命名,尽量要使类名简洁且利于描述,例如:

    SignInActivity,类名规则如下:

    大驼峰命名

    简洁而富有表达性

    尽量不使用缩写(广泛使用的单词除外,比如URL,XML...)

    多单词中采用 名词+动词的方式命名: LocationManage

    对于缩写单词要全部大写比如: XMLManage一个类如果继承了Android的组件,需在使用该组件的名称作为后缀,这样容易区分该类的作用,比如: SgnInActivity, UserInfoFragment,

    FileUploadService...接口一般使用I开头,采用大驼峰命名规则,比如:IPullToRefresh。

    3、变量

    Android变量分为三种:成员变量,静态变量和常量。

    成员变量

    成员变量一般采用小驼峰命名规则,第一单词的首字母小写,其后的首字母大写。变量名一般不使用_和$开头。例如:private Intent cropIntent;变量名应简短且易于描述,选用规则尽量简单,易于记忆和联想。

    尽量避免单个字符的变量名,除非是用于一次性的临时变量,临时的整形变量一般命名为i,j,k,m,n。字符型的变量一般使用c,d,e。对于 View变量的命名规则,如果 View是一个单词的,采用第一个单词小写的方式+对应View的描述进行,例如:

    private View viewUserInfo;

    如果是两个单词组成的View,比如: TextView,一般采用缩写的方式,例如:

    private TextView tvUserName;

    一般情况下 Button缩写为:btn。

    静态变量

    为了可以很方便的区分静态变量,静态变量的命名一般采用小写的s开头,后面单词的命名规则和 成员变量保持一致,例如:

    private static Map sCacheStrings;

    常量

    常量命名规则一般是所有的单词都是大写,中间使用_(下划线)分割,例如:

    private static final float SCALE_RATE = 1.25f;

    代码中不允许出现单独的字符串或数字常量,比如 xx.equals("1"),单独的字符串或数字不利于理解和后期的维护。如果需要使用数据或字符,请按照他们的含义封装成静态常量,或者使用枚举,for语句除外。

    4、方法

    方法命名规则采用小驼峰命名法例如:onCreate(),onRun(),方法名一般采用动词或者动名词。

    一般使用的方法名前缀。

    getXX()返回某个值的方法

    initXX() 初始化相关方法,比如初始化布局:initView()

    checkXX()和isXX() 方法为boolean值的时候使用is或者check为前缀

    saveXX() 保存数据

    clearXX()和removeXX() 清除数据

    updateXX() 更新数据

    processXX() 对数据进行处理

    dispalyXX() 显示某某信息

    drawXX() 绘制数据或者效果

    另外对于方法的其他一些规范:

    方法的参数尽可能不超过4个,需要更多的参数的时候可以是使用类的作为方法的参数

    Collections.emptyList()

    方法参数中尽量少使用boolean,使用boolean传参不利于代码的阅读

    方法尽量不超过15行,方法过长,说明当前方法业务逻辑过于复杂,需要进行方法拆分

    一个方法只做一件事,

    如果一个方法返回的是一个错误码,可以使用异常

    不使用try catch 处理业务逻辑

    尽可能不实用null,替代为异常或者使用空的变量,比如

    5、Layout

    Layout的命名规则需要和使用他们的组件对应,方便查找和维护,比如我们在创建一个用户信息的

    UserInfoActivity,对应的Layout的命名就应该是activity_user_info.xml。

    对应Andorid组件的 Layout命名规则:

    Activity ->

    activity_user_info.xml

    partial_stats_bar.xml

    Fragment ->

    fragment_sign_up.xml

    item_user.xml

    Dialog ->

    dialog_change_password.xml

    AdapterView Item ->

    Layout文件只是布局文件的一部分 ->

    6、string和color

    项目中使用的string和color的值原则上都是必须放在 strings.xml和 colors.xml中,不要放在Java代码中,这样的好处是可复用,提高维护性,减少非必要的代码。

    xml 的资源命名,字母全部小写,多个单词之间使用_(下划线)分割.

    比如: example 建议color的命名中体现其 ARGB值,比如:

    #feb749

    这样的写法对于代码提示更加的友好,有利于对照标注图查找颜色值。

    ##id命名 layout中使用的 id的单词要全部小写,单词之间使用下划线分割,使用名词或者名词词组,应该通过id的命名可以直接理解当前的 View要实现的功能.

    例如:

    @+id/tv_user_name_show

    id命名的第一个单词使用View的缩写,如果View只是一个单词,缩写就是当前单词。一般 Button的缩写为:btn。

    7、Drawable命名

    Drawable的命名规则根据使用的控件来命名,控件的缩写在前面,后面使用表示其功能的一个或者多个单词,中间使用使用_下划线分割。比如:

    Action bar使用ab_,比如: ab_stacked.png

    Button 使用btn_

    Dialgo 使用dialog_

    Divide 使用 divider_

    Icon 使用 ic_

    Menu 使用menu_

    Notification使用 notification_

    Tabs 使用tab_

    Drawable 是有多个状态的,在命名中体现出状态的不同,比如:

    Normal 对应_normal结尾,比如

    btn_order_normal.9.png

    Pressed 对应_pressed结尾

    Focused 对应_focused结尾

    Disabled 对应_disabled结尾

    Selected 对应_selected结尾

    其他资源文件的命名需要遵守Android的规范即可,比如

    arrays.xml数组文件,

    dimens.xml分辨的配置,

    style.xml样式的配置,资源文件的ID命名规则都是字母小写,使用下划线分割的原则。

    参考:

    https://github.com/ribot/android-guidelines/blob/master/project_and_code_guidelines.md

    http://source.android.com/source/code-style.html

    https://google.github.io/styleguide/javaguide.html

    转载请注明原文地址: https://ju.6miu.com/read-665605.html

    最新回复(0)