命名不规范真的很坑爹!!
一、Android编码规范
1.java代码中不出现中文,最多注释中可以出现中文
2.局部变量命名、静态成员变量命名
只能包含字母,单词首字母出第一个外,都为大写,其他字母都为小写
3.常量命名
只能包含字母和_,字母全部大写,单词之间用_隔开
4.layout中的id命名
命名模式为:view缩写_模块名称_view的逻辑名称
view的缩写详情如下
LayoutView:lv
RelativeView:rv
TextView:tv
ImageView:iv
ImageButton:im
Button:btn
5.activity中的view变量命名
命名模式为:逻辑名称+view缩写
建议:如果layout文件很复杂,建议将layout分成多个模块,每个模块定义一个moduleViewHolder,其成员变量包含所属view
6.strings.xml中的id命名
命名模式:activity名称_功能模块名称_逻辑名称/activity名称_逻辑名称/common_逻辑名称
strings.xml中,使用activity名称注释,将文件内容区分开来
7.drawable中的图片命名
命名模式:activity名称_逻辑名称/common_逻辑名称
7.styles.xml:将layout中不断重现的style提炼出通用的style通用组件,放到styles.xml中;
8.使用layer-list和selector
9.图片尽量分拆成多个可重用的图片
10.服务端可以实现的,就不要放在客户端
11.引用第三方库要慎重,避免应用大容量的第三方库,导致客户端包非常大
12.处理应用全局异常和错误,将错误以邮件的形式发送给服务端
13.图片的.9处理
14.使用静态变量方式实现界面间共享要慎重
15.Log(系统名称 模块名称 接口名称,详细描述)
16.单元测试(逻辑测试、界面测试)
17.不要重用父类的handler,对应一个类的handler也不应该让其子类用到,否则会导致message.what冲突
18.activity中在一个View.OnClickListener中处理所有的逻辑
19.strings.xml中使用%1$s实现字符串的通配
20.如果多个Activity中包含共同的UI处理,那么可以提炼一个CommonActivity,把通用部分叫由它来处理,其他activity只要继承它即可
21.使用button+activitgroup实现tab效果时,使用Button.setSelected(true),确保按钮处于选择状态,并使activitygroup的当前activity与该button对应
22.如果所开发的为通用组件,为避免冲突,将drawable/layout/menu/values目录下的文件名增加前缀
23.数据一定要效验,例如
字符型转数字型,如果转换失败一定要有缺省值;
服务端响应数据是否有效判断
资源控件命名
仅供参考,只要形成一个统一,见量知其意就可
程序员的水平,看代码规范最直接了。也就是工资的高低和你的代码质量成正比的,养成良好习惯吧!!
(一) Layout命名
1.contentview命名:activity_功能模块.xml
例如:activity_main.xml、activity_more.xml
2.Dialog命名:dialog_描述.xml
例如:dlg_hint.xml
2.PopupWindow命名:ppw_描述.xml
例如:ppw _info.xml
3. 列表项命名listitem_描述.xml
例如:listitem_city.xml
4.包含项:include_模块.xml
例如:include_head.xml、include_bottom.xml
(二) 图片命名
1. 静态图片前缀_模块、前缀_模块_描述
例如:bg_main.png、ic_main_search.png
2. 动态图片前缀_模块_描述_状态、前缀_描述_状态
例如:btn_film_buy_n.png、btn_film_buy_p.png、btn_back_n.png
(三) id命名(待调整??)
Xml中id的命名,建议直接根据意义命名,不必使用以上复杂的定位,因为findViewById只在某指定layout中find。或者value中建立id文件统一管理(兼容性不好)
android:id="@id/tv_name"android:id="@id/listv"、android:id="@id/tv_head_title"
(四) 字符串命名
最好不要跟title、dialog、button等东西关系起来,直接用相同英文含义就可以了,如果下:
<string name="ok">确定</string>
<string name=" welcome_to_use">欢迎使用</string>
再举一些不好的例子,如下<string name="menu_ok ">确定</string>
(五) 控件命名
控件缩写_描述
例如:TextViewtv_name、Button btn_buy、LinearLayoutllyt_body;
(六) 类命名
功能模块Activity.class 功能模块Service.class
如:MainActivity.class HuaFuBaoActivity.classAppUpgradeService.class
资源缩写说明
前缀 | 说明 |
ic --icon | 主要用于布局和子布局的图标 |
bg--background | 主要用于布局和子布局的背景 |
di--divider | 主要用于分隔线,不仅包括Listview中的还包括普通布局中的线 |
sl--selector | 主要用于某一view多种状态,listview 按钮等 |
cl--color | 主要用于颜色值 |
bt--button | 主要用于按钮的表示,有时我们会在ic和bt之间犹豫,简单的区分即是功能视图,如果一个view执行的时back或者confirm或者cancel的功能,则命名上则应该使用bt |
后缀 | 说明 |
unit | 在使用xml的tilemode来配图片时,element图片使用此后缀 |
nor | 图片的状态,代表普通状态 |
hl | 图片的状态,代表高亮状态 |
press | 图片的状态,代表按下状态 |
select | 图片的状态,代表其所占的view被选中 |
unselect | 图片的状态,代表其所占的view没有被选中 |
组件名称对照表
组件名称 | 简写 | 组件名称 | 简写 |
Button | Btn(btn) | RadioButton | Rbtn(rbtn) |
ImageButton | Ibtn(ibtn) | TextView | Tv(tv) |
ImageView | Iv (iv) | ListView | Lv(lv) |
ProgressBar | Pbar(pbar) | EditText | Edtv(et) |
ScrollView | Sclv(scly) | CheckBox | Chk(chk) |
RelativeLayout | Rlyt(rlyt) | LinearLayout | Llyt(llyt) |
TableLayout | Tlyt(tlyt) | AbsoluteLayout | ALyt(alyt) |
FrameLayout | Flyt(flyt) |
|
|
参考: http://blog.csdn.net/bondsui