Android编码规范

Android编码规范

 

动机

我们毕竟是多人合作开发的,每个人的习惯不一样,这会导致代码很不统一,看别人的代码很不舒服,影响开发和维护;

原则

1. 务实和精简。网上规范很多,但是过于冗长的规范最终会变成摆设,所以我们尽量保持务实和精简;

2. 代码review。定期的代码review能确保规范的严格执行;

3. 规范是活的。我们会根据实际需要增减条目;

 

  

技巧

写代码的时候请想着2件事情:

4. 假设你要在公司呆很多年,你写的代码你要负责一直维护下去的;(这能避免你写出不负责任的代码)

5. 假设你是在帮一个你暗恋已久的妹子写代码,希望她看到你的代码能会心一笑;(这会帮你写出可读的代码)

 

包名

全部用小写;

不要出现下划线,例如wei_xin;

不要出现v2/v3这样的版本号;

用单数词而不必用复数词,例如widget(Yes), widgets(No);

 

 

常用包名:

activity //内部按业务再分类

fragment

dialog

adapter

util

widget  // 自定义View

service

entity

interfaze // 因为interface是关键字,不能用

constant

receiver

http

provider //ContentProvider

storage

· --db

· --sp  // SharedPreference

web

 

 

布局

加类型前缀,例如:

activity_

fragment_

dialog_

item_

footer_

header_

 

不要用layout_这种没营养的前缀;

 

View的id加类型前缀,全部小写,用_分割,例如btn_login;

常用类型前缀:

tv_

iv_

btn_

lv_     // ListView

spn_  // Spinner

ckb_  // CheckBox

v_      // View

ll_      // LinearLayout

rl_      // RelativeLayout

fl        // FrameLayout

 

 

 

 

字体

字体用font_sp数字,例如:

font_16

font_17

 

距离用space_dp数字,例如:

space_12

space_14

 

圆角用radius_dp数字,例如:

radius_12

radius_14

 

不要出现业务字眼,例如title_bar_margin_top,因为一出现业务字眼就不通用了;

 

 

 

 

颜色

 

不要出现业务字眼,例如btn_bg_normal,因为这就不通用了;

 

尽量给每个颜色取个名字,例如:

red

green

那些不好取名字,但是大概知道属于什么颜色的就用red_1, red_2, green_1, green_2;

 

那些实在不知道怎么取名字的,用color_1, color_2;

 

 

 

 

 

 

 

图片

全部小写,用_分割,形如a_b_c;

建议加类型前缀,例如ic_,bg_,ani_有助于缩小查找范围;

避免毫无营养的前缀,例如img_,pic_;

尽量描述图片内容,例如用ic_dog, ic_cat;

少牵扯使用场景,例如:ic_login;

 

常用前缀有:

ic_    // icon

bg_   // background

ani_  // animation

 

不同状态下的图用后缀区分:

_normal

_pressed

_disabled

请严格使用这几个约定的单词,不要出现_press, disable等变形;

 

 

 

 

 

其他Drawable资源

selector_.xml

shape_.xml

 

 

 

 

类名

名词,大写开头,驼峰,例如LoginActivity;

特殊的类加类型后缀,常见后缀有:

Activity;

Fragment;

Adapter;

Service;

Receiver;

Provider;

 

 

 

 

 

 

成员名

名词,以m开头,驼峰,例如mName;

 

Java里的View成员名和layout里的id对应,例如:

TextView mTvName = (TextView)findViewById(R.id.tv_name);

 

非成员变量名

和成员名类似,去掉m前缀就行了;

 

 

方法名

动词或者动词短语,小写开头,驼峰,例如initTitleBar();

 

 

 

 

注释

// 这是单行注释

 

/**

 * 这是多行注释

 * 一行

 * 一行

 **/

 

尽量加注释;

 

 

格式化

AndroidStudio默认配置,不要自定义,这样大家能保持统一;

 

 

 

 

行宽

100列,超过要换行,照顾笔记本等小屏幕;

 

注意换行位置;

 

YES:

String str = “hello”

                    + “world”;// 链接符号放在下一行;

NO:

String str = “hello”+

“world”;

 

 

 

注意亲密度:

YES:

tvName.setText(

“hello”+ “world”); // 让逻辑上亲密的元素挨在一起

 

NO:

tvName.setText(“hello”

+ “world”);

 

 

 

 

括号

// 就算只有一行也要加括号,避免以后再加一行的时候忘记加括号;

 

if(flag) {

    tvName.setText(“a”);  

} else {

    tvName.setText(“b”);

}

 

 

 

 

 

常量

重复出现的字符串或数字都应该定义成常量,全部大写,下划线分割,例如:

 

putExtra(“user_name”, ..)

getStringExtra(“user_name”, …)

 

应该改成:

Static final String USER_NAME = “user_name”;

putExtra(USER_NAME, ..)

getStringExtra(USER_NAME, …)

 

 

 

 

 

Activity之间的参数传递

由被调用者提供一个方法,这样参数不容易传错;

 

 

ActivityA{

void onClick(){

ActivityB.start(this, "name");

}

}

 

ActvivityB{

private static final String NAME = "name";

 

public static void start(Context context, String name){

Intent i  = new Intent(context, ActivityB.class);

i.putExtra(NAME, name);

context.startActivity(i);

}

 

onCreate(){

String name = getIntent().getStringExtra(NAME);

}

}

 

 

 

TODO

没做完,没想明白的地方一定要用TODO备注;

 

// TODO:  aaa

 

 

 

 

Git

1)每次提交只涉及一个模块或者功能点,不要把多个无关联的修改一股脑的提交,方便查看diff和revert;

 

2)提交前一定要测试,确保能正常编译和运行,不要影响其他人的工作;

 

3)注释格式:类别 + 位置 + 描述:

feature: 优惠券页面,字体修改;

refine: 首页,启动速度优化;

bug: 登录页面,点击按钮没反应;

类别仅限于上面这3类,请严格用这几个小写单词,不要出现Bug, fix bug, bug fix, add feature等变形,这样以后看git log会很舒服;

 

 

格式化

如果遇到以前没格式化的代码,建议在修改前先格式化一次并提交一次,注释写清楚“单纯格式化,没有修改”,然后再继续你的工作,避免其他人看到很多diff,都不知道你到底改了哪里;

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值