美文网首页
Android 开发规范(一)

Android 开发规范(一)

作者: 代码君_Coder | 来源:发表于2018-04-03 11:02 被阅读41次

    书写规范

    1. 编码方式

    统一用UTF-8. Android Studio默认已是UTF-8,只要不去改动它就可以了。


    image.png
    2. 缩进

    统一为4个空格,将Tab size设置为4则可以保证tab键按4个空格缩进。另外,不要勾选上Use tab character,可以保证切换到不同tab长度的环境时还能继续保持统一的4个空格的缩进样式。


    image.png
    3. 花括号
    public void method() 
    { // Bad
     
    } 
    public void method(){
     // Good
    } 
    
    4. 空格的使用

    if、else、for、switch、while等逻辑关键字与后面的语句留一个空格隔开。

    // Good
    if (booleanVariable) {
        // TODO while booleanVariable is true
    } else {
        // TODO else
    }
     
    // Bad
    if(booleanVariable) {
        // TODO while booleanVariable is true
    }else {
        // TODO else
    

    运算符两边各用一个空格隔开。

    int result = a + b; //Good, = 和 + 两边各用一个空格隔开
    int result=a+b; //Bad,=和+两边没用空格隔开
    

    方法的每个参数之间用一个空格隔开。

    public void method(String param1, String param2); // Good,param1后面的逗号与String之间隔了一个空格
    method(param1, param2); // Good,方法调用时,param1后面的逗号与param2之间隔了一个空格
    method(param1,param2); // Bad,没有用一个空格隔开
    
    5. 空行的使用

    将逻辑相关的代码段用空行隔开,以提高可读性。空行也只空一行,不要空多行。在以下情况需用一个空行:
    - 两个方法之间
    - 方法内的两个逻辑段之间
    - 方法内的局部变量和方法的第一条逻辑语句之间
    - 常量和变量之间

    6. 长行

    当一个表达式无法容纳在一行内时,可换行显示,另起的新行用8个空格缩进。

    someMethod(longExpression1, longExpression2, longExpression3,  
        longExpression4, longExpression5);
    
    7. 一行声明一个变量

    一行声明一个变量,不要一行声明多个变量,这样有利于写注释。

    private String param1; // 参数1
    private String param2; // 参数2
    
    8. 行宽设置为100,设置格式化时自动断行到行宽位置。
    9. 使用快捷键进行代码自动格式化。

    Windows:CTRL+ALT+L
    Mac:OPTION+COMMAND+L

    10. 一个方法最多不要超过40行代码。
    11. 引用第三方库要慎重

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

    12. 文字大小的单位

    统一用sp,元素大小的单位统一用dp。

    13. 应用中的字符串

    统一在strings.xml中定义,然后在代码和布局文件中引用。

    14. 颜色值

    统一在colors.xml中定义,然后在代码和布局文件中引用。另外,不要在代码和布局文件中引用系统的颜色,除了透明。

    15. JSON解析

    Android中调用服务器端的接口一般返回的是JSON数据,在解析JSON的时候,无论是使用原始的手工解析方式,还是使用javabean的解析方式,解析出来的结果在使用的时候必须都进行判空处理。不允许因为服务端的json出问题,导致app在解析json的时候出现崩溃。

    16. Int类型常量

    函数返回的时候,如果返回的int类型的数据并不是真实的实用的数据值(例如表示宽度、高度、大小等值),仅仅代表函数执行成功、失败、异常的状态值,并且这些值是有限的几个值,必须要将这些值使用静态常量描述,或者使用枚举类型,例如:

    int GetJsonString()
    

    该函数返回-1表示获取解析JSON数据异常,返回0表示成功,返回1表示网络连接异常,返回2表示JSON内容中的数据部分为空。
    那么在函数内部的代码里不要直接使用这些字面值,这些字面值对于程序员来说是毫无意义的,代码可阅读性很差,建议做成下面的模式:

    public static final int RESULT_PARSE_JSON_EXCEPTION = -1;
    public static final int RESULT_SUCCESS = 0;
    public static final int RESULT_NETWORK_EXCEPTION = 1;
    public static final int RESULT_NO_DATA = 2;
    

    使用这些符号常量值代替字面值的好处是,符号常量值是由大写的英文单词组成,是有意义的,可以帮助程序员更好的理解函数返回值的意义,而且符号常量值对应的具体的赋值在后期也是很方便修改的

    16. 封装 Log 功能

    Log功能应该封装成为自动将当前所在类的类名变成log输出的TAG参数,发布的app最好是能循环写日志文件到系统存储中,并且日志文件应该使用反复覆盖的方式重复利用。下面仅仅是一个不完善的例子:

    public class MyLog {
        public static final String TAG = "myapp ";
        public static void v(Object o, String message) {
            Log.v(TAG + o.getClass().getSimpleName(), message);
          }
    }
    

    使用方法:

      Log.v(TAG + o.getClass().getSimpleName(), message);
    

    打印结果

    V/myapp MainActivity: Hello 
    
    17. Activity点击事件

    activity中在一个View.OnClickListener中处理所有的逻辑。

    18. 数据一定要效验

    例如字符型转数字型,如果转换失败一定要有缺省值;

    服务端响应数据是否有效判断;

    相关文章

      网友评论

          本文标题:Android 开发规范(一)

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