android代码命名规范.md

作者: zivxia | 来源:发表于2021-06-23 20:41 被阅读0次

    基本代码的命名

    image.png image.png
    • 1.对象类型变量用m开头

    • 2.基本数据类型则不用m开头

    • 3.常量可以使用统一的开头

    http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2016/1102/6736.html

    文件命名

    命名的前提是见名知意

    类命名:应该以驼峰式(UpperCamelCase),比如:LoginActivity、HomeFragment、ListView

    资源命名:命名应该以lowercase_underscore(小写下划线的形式)。

    1.Drawable files(图片文件)

    作为选择器背景图片的命名:


    image.png
    image.png
    image.png
    2.Layout files(布局文件)

    布局文件名应该对应的组件来命名

    image.png
    3.Menu files(菜单文件)

    菜单文件的命名跟布局文件的命名也是一样,都应该与对应的组件名字保持对应。比如,我们定义了一个菜单文件用在UserActivity,所以这个菜单文件的名字应该叫做activity_user。不以menu开头是因为这个菜单文件本身就放在了menu目录下,就不需要加上menu以区分。

    4.Values files

    values目录下的文件名称都应该以复数的形式命名。例如:strings.xml、colors.xml、styles.xml。如果我们需要自定义view的自定义属性,则应该命名为attrs.xml

    Java language rules

    1.Don't ignore exceptions
    
    // 字符串转 long 整型
    public static long parseLong(String value, long defaultValue) {
    long resultValue = defaultValue;
    try {
    resultValue = Long.parseLong(value);
    } catch (Exception e) {
    e.printStackTrace();
    return resultValue;
    }
    return resultValue;
    }
    
    
    2.Don't catch generic exception
    
    try {
    someComplicatedIOFunction(); // may throw IOException
       someComplicatedParsingFunction(); // may throw ParsingException
       someComplicatedSecurityFunction(); // may throw SecurityException
       // phew, made it all the way
    } catch (Exception e) { // I'll just catch all exceptions
       handleError(); // with one generic handler!
    }
    
    

    分别捕获每个异常

    3.Fully qualify imports
    
    import foo.*;   // bad
    
    import foo.Bar; // good
    
    

    Java style rules

    1.Fields definition and naming

    成员变量或常量应该被定义在文件的开头并遵循如下规则:

    • 私有的非静态field命名应该以m开头

    • 私有的静态的field命名应该以s开头

    • 其它成员fields应该以小写字母开头

    • 静态final fields型常量应该全为大写字母并用下划线连接 ALL_CAPS_WITH_UNDERSCORES

    
    public class MyClass {
    public static final int SOME_CONSTANT = 42;
    public int publicField;
    private static MyClass sSingleton;
    int mPackagePrivate;
    private int mPrivate;
    protected int mProtected;
    }
    
    
    2.Treat acronyms as words(视缩写为单词)
    image.png

    代码段用4个空格缩进###User spaces for indentation(用空格缩进)

    
    if (x == 1) {
    x++;
    }
    
    

    用8个空格进行换行缩进

    
    int i =        getIntegerExpression(that, wouldNotFit, on, one, line);
    
    
    3.User standard brace style

    使用标准的花括号样式

    
    class MyClass {
    int func() {
    if (something) {
    // ...
           } else if (somethingElse) {
    // ...
           } else {
    // ...
           }
    }
    }
    
    

    如果判断语句一行就能写完,就没必要用花括号

    
    if (condition) {       body(); // good}if (condition)
    body(); // bad!
    
    
    4.Limit variable scope(限制局部变量的范围)

    局部变量的的范围应保持在最低限度的。这样做可以增加代码的可读性和可维护性,减少出错的可能性。最里面的块中声明的每个变量应该包含所有变量的使用。

    5.Order import statements(导入包的排序)

    一般IDE比如androidStudio,都已经自动遵守这个规则。具体排序如下

    1. Android imports(android 包)

    2.第三方类库

    3.java和javax包

    4.项目内的包

    并且为了匹配IDE的设置,还应遵守如下规则:

    1.同一分组内,按字母顺序进行排序。

    2.分组之间应该用空行分隔。

    6.Logging guidelines

    日志等级:

    • Log.v(String tag, String msg) (verbose)

    • Log.d(String tag, String msg) (debug)

    • Log.i(String tag, String msg) (information)

    • Log.w(String tag, String msg) (warning)

    • Log.e(String tag, String msg) (error)

    egg:

    
    public class MyClass {
    private static final String TAG = MyClass.class.getSimpleName();
    
    public myMethod() {
    Log.e(TAG, "My error message");
    }
    }
    
    

    日志一般会在正式上线之后全部关掉。也可以在开发阶段控制log是否显示:

    
    if (BuildConfig.DEBUG) Log.d(TAG, "The value of x is " + x);
    
    
    7.Class member ordering(类成员的顺序)

    主要是为了提高代码可读性

    1.常量

    2.成员变量

    3.构造函数

    4.重写的方法和回调函数(public or private)

    5.public methods

    6.private methods

    7.Inner classes or interfaces

    举个例子来说:

    
    public class MainActivity extends Activity {
    
    private String mTitle;
    private TextView mTextViewTitle;
    
    public void setTitle(String title) {
    mTitle = title;
    }
    
    @Override
       public void onCreate() {
    ...
    }
    
    private void setUpView() {
    ...
    }
    
    static class AnInnerClass {
    
    }
    
    }
    
    

    如果一个类是继承系统类,则重写的方法的排序都是很有可读性的

    
    public class MainActivity extends Activity {
    
    //Order matches Activity lifecycle
       @Override
       public void onCreate() {}
    
    @Override
       public void onResume() {}
    
    @Override
       public void onPause() {}
    
    @Override
       public void onDestroy() {}
    
    }
    
    
    8.Parameter ordering in methods

    android中如果一个函数的参数包括context,则context必须作为参数的第一位,回调接口一般放置在最后一位

    
    // Context always goes first
    public User loadUser(Context context, int userId);
    
    // Callbacks always go last
    public void loadUserAsync(Context context, int userId, UserCallback callback);
    
    
    9.String constants,naming,and values

    当使用android中 SharedPreferences,Bundle,Intent等键值对类型api时,键值必须使用常用,命名规则如下:

    10.Line length limit

    一行的代码最好不要超过120个字符,如果超过了一行则应该使用创建一个临时变量或者将一行写成多行。例子如下:

    
    int longName = anotherVeryLongVariable + anEvenLongerOne - thisRidiculousLongOne // bad
           + theFinalOne;
    int longName =
    anotherVeryLongVariable + anEvenLongerOne - thisRidiculousLongOne + theFinalOne; // good
    Picasso.with(context).load("http://ribot.co.uk/images/sexyjoe.jpg").into(imageView); // bad
    Picasso.with(context)
    .load("http://ribot.co.uk/images/sexyjoe.jpg") // good
           .into(imageView);
    loadPicture(context, "http://ribot.co.uk/images/sexyjoe.jpg", mImageViewProfilePicture, clickListener, "Title of the picture"); // bad
    loadPicture(context,
    "http://ribot.co.uk/images/sexyjoe.jpg",
    mImageViewProfilePicture,
    clickListener,
    "Title of the picture"); // good
    
    

    XML styles

    1.ID的命名
    2.strings的命名:
    3.Styles和Themes的命名

    应该以驼峰的形式

    4.values中排序

    应该将相近的相似的属性放在一起

    1.View ID

    2.Style

    3.Layout width and layout height

    4.Other layout attributes, sorted alphabetically

    5.Remaining attributes,sorted alphabetically

    相关文章

      网友评论

        本文标题:android代码命名规范.md

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