Android 项目编码规范总结笔记
图片取自网络注释的目的是为了弥补代码自身在表达上的不足
好的代码能够让任何人在不需要任何注释的情况下看懂,由此可见,养成清晰明确规范的编码风格多重要。
每个公司项目都会自己定义一套命名规则来着,遵守命名规则来编写代码,方便自己,方便他人,百度一下Android命名规则,当然能得到很多结果,规则大致相似,也有少许差异,然而本人记性一般,偶尔看到更简便,自己也更为喜欢的命名规范,在没有一直使用到的情况下,过个几天也许就忘记了,所以,一定得做个笔记才行,哈哈哈~
-
包名(小写,个人喜欢按控件来取包名,而不是业务,com.xx[公司或个人或项目名].[控件或者模块名].[业务比较多的情况下,页面又多就再分个模块名])
- com.xx.activity(页面用到的Activity类)如果activity比较多,再加一层 com.xx.activity.model
- com.xx.fragment(页面用到的Fragment类)
- com.xx.base (基础共享的类)
- com.xx.adapter(适配器)
- com.xx.utils(公共工具方法类,包括网络、日志、日期、文件等等一系列的工具类)
- com.xx.bean(JavaBean类)或者 com.xx.entity/domain/model
- com.xx.db( 数据库操作类)
- com.xx.view(自定义的View类)或者com.xx.ui
- com.xx.service( Service服务)
- com.xx.receiver(BroadcastReceiver广播)
还有其他包就按模块作用取名吧,总之要一眼知道这个包都是装了些哪种类型的类。
-
类名(大驼峰,用名词或名词词组,首字母大写,主要取名方式还是要让别人知道这是个什么样的类,这个类主要做什么事情,各个组件的取名后缀就加上组件,比如说xxActivity,xx就描述这是个啥Activity)
什么XXXAplication、WelcomeActivity、ArticleAdapter、HomePosterParser、ActivityStackManager、LogUtil、NewDBHelper、TimeServiceBroadcast、JPushReceiver、BaseActivity、BaseFragment、接口IRunable -
方法名(小驼峰、动词、首字母小写)
- 初始化相关方法,使用init为前缀——initXX()
- 方法返回值为boolean型——isXX()或者checkXX()
- 返回某个值——getXX()
- 对数据进行处理——handleXX()
- 弹出提示框和提示信息——displayXX()或者showXX()
- 保存数据——saveXX()
- 数据重组——resetXX()
- 清除数据——clearXX()或者removeXX()
- 绘制数据或效果——drawXXX()
- 按钮点击方法,命名以to开头——toLogin
- 设置方法,命名以set开头——setData
- 通过异步加载数据的方法,命名以load开头——loadData
-
常量名(全部为大写、单词间用下划线分开)
- public final static int PAGE_SIZE = 20;
-
变量({范围描述+}意义描述+类型描述,驼峰式,首字母小写)
- private TextView titleTv; 个人认为 tvTitle也是可以的
- 非公有,非静态字段命名以m开头
- 静态字段命名以s开头
- 公有非静态字段命名以p开
- 公有静态字段(全局变量)命名以g开头
- public static final 字段(常量) 全部大写,并用下划线连起来
- 集合添加如下后缀:List、Map、Set
- 数组添加如下后缀:Arr
-
控件缩写
- TextView tv
- EditText edt
- Button btn
- ImageButton ibtn
- ImageView img
- ListView lv
- RadioGroup group
- RadioButton rbtn
- ProgressBar progress
- SeekBar sbar
- CheckBox cbox
- Spinner spinner
- TableRow row
- LinearLayout llayout (TableLayout、RelativeLayout 类似)
- ScrollView scroll
- SearchView search
- TabHost host
- TabWidget widget
-
控件id(控件缩写+{范围}+意义)
- 登录按钮:<Button android:id="@+id/btn_login" ... />
-
资源布局文件(组件类型+功能模块(描述),用组件名称开头的布局文件可以很清晰的表示这个布局文件是被那类组件使用)
- activity_功能,为Activity的命名格式,比如activity_main.xml、activity_more.xml
- fragment(frag)_功能,为Fragment的命名格式
- dialog_功能,为Dialog的命名格式,比如dialog_hint.xml
- item_list_功能,为ListView的item命名格式
- item_grid_功能,为GridView的item命名格式
- header_list_功能,为ListView的HeaderView命名格式
- footer_list_功能,为ListView的FooterView命名格式
- ppw_描述,为PopupWindow命名
- include_模块,为包含项命名,例如:include_head.xml、include_bottom.xml
-
动画文件(anim文件夹下,小写,下划线,加前缀)
截图取自网上
-
strings(类型+{范围}+功能)
- 页面标题,命名格式为:title_页面
- 按钮文字,命名格式为:btn_按钮事件
- 标签文字,命名格式为:label_标签文字
- 选项卡文字,命名格式为:tab_选项卡文字
- 消息框文字,命名格式为:toast_消息
- 编辑框的提示文字,命名格式为:hint_提示信息
- 图片的描述文字,命名格式为:desc_图片文字
- 对话框的文字,命名格式为:dialog_文字
- menu的item文字,命名格式为:action_文字
-
colors
- 背景颜色,添加bg前缀
- 文本颜色,添加text前缀
- 分割线颜色,添加div前缀
- 区分状态时,默认状态的颜色,添加normal后缀
- 区分状态时,按下时的颜色,添加pressed后缀
- 区分状态时,选中时的颜色,添加selected后缀
- 区分状态时,不可用时的颜色,添加disable后缀
-
**Drawable **
图标类,添加ic前缀
背景类,添加bg前缀
分隔类,添加div前缀
默认类,添加def前缀
区分状态时,默认状态,添加normal后缀
区分状态时,按下时的状态,添加pressed后缀
区分状态时,选中时的状态,添加selected后缀
区分状态时,不可用时的状态,添加disable后缀
多种状态的,添加selector后缀(一般为ListView的selector或按钮的selector) -
styles(模块名+逻辑名称)
- main_tabBottom