美文网首页
Android代码规范

Android代码规范

作者: 鲁东_ | 来源:发表于2017-09-18 17:07 被阅读0次

    1.前言

    • 为了能够更好的阅读和美观,现对Android端代码进行统一规范。该文档参考

    阿里开发手册

    2.命名规范

    2.1 文件编码
    • 源文件编码格式采用UTF-8
    2.2 包名
    • 项目包名采用倒网址方式命名方式,”com”+公司简写+项目名
    com.yxzc.community
    
    2.3 变量名
    • Java变量名、类名严格按照驼峰法命名。

    • 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。

    • 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。

    • 正确的英文拼写和语法可以让阅读者易于理解,避免歧义

    • 需要时才声明,并尽快进行初始化

    • 不要使用组合声明,比如int a, b;。

    • 例如:

    private int mBitmapWidth; 
    private int mBitmapHeight; 
    private float mDrawableRadius;
    private float mBorderRadius;
    
    2.4 资源文件名
    • 布局文件名、图片文件名、资源id等,皆由小写字母+数字+下划线组成,不能又数字打头,多个单词由下划线隔开
    • 全部小写,采用下划线命名法
    2.4.1 contentview 命名
    • 必须以全部单词小写,单词间以下划线分割,使用名词或名词词组。
    • 所有Activity或Fragment的contentView必须与其类名对应,对应规则为:
    • 将所有字母都转为小写,将类型和功能调换(也就是后缀变前缀)。
    activity_main.xml
    
    2.4.2 Dialog命名:dialog_描述.xml
    dialog_username.xml
    
    2.4.3 PopupWindow命名:ppw_描述.xml
    ppw_parkinglot.xml
    
    2.4.4 列表项命名:item_描述.xml
    item_notification.xml
    
    2.4.5 包含项命名:模块_(位置)描述.xml
    activity_main_head.xml
    activity_main_bottom.xml
    
    2.5 方法名
    • 如变量名相同,但应避免太长
    • 方法名通常是动词或动词短语。
    init();
    getXX();
    setXX();
    closeXX();
    addXX();
    deleteXX();
    removeXX();
    

    正确格式

    private void updateShaderMatrix()
    

    错误格式

     private void setSensorListActivityAllDataInterface()
    
    2.6常量名
    • 常量名命名模式为CONSTANT_CASE,全部字母大写,用下划线分隔单词
    • 每个常量都是一个静态final字段,但不是所有静态final字段都是常量。在决定一个字段是否是一个常量时,考虑它是否真的感觉像是一个常量。
      如:
    public static final String CONTENT = "content";  
    public static final String FILES = "FILES";  
    public static final String LIKE = "like";  
    public static final String REPORT_TYPE = "obj_type";  
    public static final String REPORT_ID = "obj_id"; 
    public static final String REPORT_REASON = "reason";   
    public static final String REPLY = "reply";   
    

    3.注释

    3.1 块注释风格
    • 块注释与其周围的代码在同一缩进级别。它们可以是/ ... /风格,也可以是// ...风格。对于多行的/ ... /注释,后续行必须从开始, 并且与前一行的对齐。
    3.2类文件注释
    • 类文件注释应包含当前类的功能信息描述,创建人,创建时间
    /**
     * 共建详情页面
     * Created by ld on 2017/9/14 0014.
     */
    
    public class TopicDetailedAty extends BaseActivity implements ITopicDetailedView,TopicOpinionAdapter.OnItemClickListener {
    
    
    3.3方法注释
    • 方法注释应包含当前方法的功能信息描述,参数说明,返回值说明
    /**
         * Created by ld on 2017/9/15
         * 获取话题内容
         * @param token     论坛token
         * @param topic     话题ID
         * @param num        评论条数
         * @param listener   回调接口
         */
        @Override
        public void getTopicInfo(String token, int topic, int num,final GetTopicInfoListener listener) {
    
    3.4语句注释
    • 某些晦涩难懂的语句,应当加上注释,说明该语句作用
    // 播放音频,第二个参数为左声道音量;第三个参数为右声道音量;第四个参数为优先级;第五个参数为循环次数,0不循环,-1循环;第六个参数为速率,速率最低0.5最高为2,1代表正常速度
            soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
    
                public void onLoadComplete(SoundPool soundPool, int sampleId,
                                           int status) {
                    soundPool.play(sourceid, 2, 2, 0, 0, 1);
                }
            });
    

    4. 特殊字符

    4.1空白字符
    • 除了行结束符序列,ASCII水平空格字符(0x20,即空格)是源文件中唯一允许出现的空白字符,这意味着:
      4.1.1. 所有其它字符串中的空白字符都要进行转义。
      4.1.2. 制表符不用于缩进(可以在IDE中Tab键设置为若干个空格)。
    4.2特殊转义序列
    • 对于具有特殊转义序列的任何字符(\b, \t, \n, \f, \r, ", '及),我们使用它的转义序列,而不是相应的八进制(比如\012)或Unicode(比如\u000a)转义。
    4.3ASCII字符
    • 对于剩余的非ASCII字符,是使用实际的Unicode字符(比如∞),还是使用等价的Unicode转义符(比如\u221e),取决于哪个能让代码更易于阅读和理解。
    例如:
    String unitAbbrev = "μs"; | 即使没有注释也非常清晰
    String unitAbbrev = "\u03bcs"; // "μs" | 允许,但没有理由要这样做
    String unitAbbrev = "\u03bcs"; // Greek letter mu, "s" | 允许,但这样做显得笨拙还容易出错
    String unitAbbrev = "\u03bcs"; | 很糟,读者根本看不出这是什么
    return '\ufeff' + content; // byte order mark | Good,对于非打印字符,使用转义,并在必要时写上注释
    

    5.VALUES的使用

    5.1文本字符串
    • 程序中出现的描述语句,提示语句,视图控件中的默认值等应放置在values/string资源文件中,通过getString调用以便后期修改以及国际化
    5.2尺寸值、色值
    • 尺寸值包含字体尺寸、布局尺寸等,应放置在values/dimen;色值应放置在values/color资源文件下,方便管理修改

    6.格式术语

    • 说明:块状结构(block-like construct)指的是一个类,方法或构造函数的主体。需要注意的是,数组初始化中的初始值可被选择性地视为块状结构(4.8.3.1节)。
    6.1大括号
    • 大括号与if, else, for, do, while语句一起使用,即使只有一条语句(或是空),也应该把大括号写上
    • 对于非空块和块状结构,大括号遵循 Kernighan 和 Ritchie 风格 (Egyptian brackets)
    • 左大括号前不换行
    • 左大括号后换行
    • 右大括号前换行
    • 如果右大括号是一个语句、函数体或类的终止,则右大括号后换行; 否则不换行。
    return new MyClass() {    
        @Override public void method() {        
            if (condition()) {
                try {
                    something();
                } catch (ProblemException e) {
                    recover();
                }
            }
        }
    };
    
    6.2空结构使用简洁
    • 一个空的块状结构里为空,简写成{}
    void getInfo() {}
    
    6.3换行
    • 每个语句后要换行
    • 列限制:60
      一个项目可以选择一行80个字符或100个字符的列限制,除了下述例外,任何一行如果超过这个字符数限制,必须自动换行。

    7.数据结构

    7.1 switch语句
    • 每个语句组包含一个或多个switch标签(case FOO:或default:),后面跟着一条或多条语句
    • 与其它块状结构一致,switch块中的内容缩进为2个空格。每个switch标签后新起一行,再缩进2个空格,写下一条或多条语句。
    • 每个switch语句都包含一个default语句组,即使它什么代码也不包含。

    相关文章

      网友评论

          本文标题:Android代码规范

          本文链接:https://www.haomeiwen.com/subject/nedbsxtx.html