一、Android 编码规范
1、学会使用 string.xml 文件
在我看来,当一个文本信息出现的次数大于一次的时候就必须要使用 string.xml
比如一个保存按钮 , 不规范写法:
- <Button
- android:id="@+id/editinfo_btn_save"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="保存"
- />
这里给它的文本内容设置为 "保存",那么一个 app 中所有的保存按钮都这样写。当有一天要修改需求了,要求把 "保存" 文字改成 "提交",那么我们只能去一个个布局文件中修改,
岂不浪费大量时间又可能会存在漏掉修改的情况。
规范写法:
- <Button
- android:id="@+id/editinfo_btn_save"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/save"
- />
而在 string.xml 文件中:
- <string name="save">保存</string>
这种写法,往后需要修改,只需要在 string.xml 文件中修改一行代码 便实现了整个 APP 的该文本内容修改。
2、学会使用 color.xml ,dimens.xml 文件的使用
同 string.xml 使用一致,同学们应该都懂的,切勿因为一时的懒,导致后期的迭代费时费力。
3、团队协同确定一套标准 Activity 的 onCreate() 方法中代码执行流程
其实刚接触 Android 的时候,我的不规范代码是这样的:
- private Button scan; //扫描按钮
- private Button create; //创建按钮
- private ArrayList<Object> datas; //数据源
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- create = (Button) findViewById(R.id.create);
- scan = (Button) findViewById(R.id.scan);
- scan.setOnClickListener(this);
- create.setOnClickListener(this);
- datas = new ArrayList<>();
- datas.add(new Integer(1));
- datas.add(new Integer(2));
- datas.add(new Integer(3));
- datas.add(new Integer(4));
- }
什么都不管,所有的操作代码都写在 onCreate() 方法中,包括 find 控件。设置监听事件,加载数据源等等。
可以看到现在就 2 个控件一个数据源,代码就这么多了,如果一个界面有 10 多个控件呢,那 onCreate() 方法中的代码量就成倍数的多起来了。
所以所有的 Activity 都要设定一个统一的规范。
我们都知道,一个 Activity 中有基本都有的操作:
①、初始化变量
②、初始化控件
③、设置监听事件
④、加载网络数据并显示
那么就可以将以上的代码分门别类的放在这几个方法中
比如一段规范代码:
- public class MainActivity extends AppCompatActivity implements View.OnClickListener {
- private Button btn_scan; //扫描按钮
- private Button btn_create; //创建按钮
- private ArrayList<Object> datas; //数据源
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- initVariables();
- initView();
- initEvent();
- loadData();
- }
- //初始化变量,比如 上一个Activity传来的Intent的数据 本Activity中一些标记变量等
- private void initVariables() {
- }
- //加载数据源
- private void loadData() {
- }
- //注册监听事件
- private void initEvent() {
- btn_scan.setOnClickListener(this);
- btn_create.setOnClickListener(this);
- }
- //初始化控件
- private void initView() {
- btn_create = (Button) findViewById(R.id.create);
- btn_scan = (Button) findViewById(R.id.scan);
- }
- //设置点击事件
- @Override
- public void onClick(View v) {
- switch (v.getId()){
- case R.id.btn_scan:
- //扫描二维码
- startActivity(new Intent(this,ScanActivity.class));
- break;
- case R.id.btn_create:
- //生成二维码
- startActivity(new Intent(this,CreateActivity.class));
- break;
- }
- }
- }
可以看到,onCreate() 中就那么几个方法了,我们需要找问题的时候在相应的方法中去找即可,既方便又清晰。
其实这种操作我们可以写一个 BaseActivity 作为它的的抽象方法,然后让 Activity 继承这个 BaseActivity 基类重写方法即可,涉及到架构,这个往后再说。
4、团队协同确定一种控件的点击事件 OnClickListener()
Android 给我们提供 5 种给控件设置 OnClick 的方法,个人觉得项目中用的最多的就是
①、参数 this 然后 Activity 实现 View.OnClickListener 接口 重写 onClick() 方法
- btn_create.setOnClickListener(this);
②、直接参数 new OnclickListener() 的
- btn_create.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- }
- });
其他三个方法个人觉得尽量不要用。而这两种方法中第一种 是更好的,因为我们可以通过 switch--case 的方法区分不同控件的点击事件,代码更清晰简约。
当然第二种方法也是可以的,但是切记同一个项目中最好只有一种方式,便于后期的维护。
- //设置点击事件
- @Override
- public void onClick(View v) {
- switch (v.getId()){
- case R.id.scan:
- //扫描二维码
- startActivity(new Intent(this,ScanActivity.class));
- break;
- case R.id.create:
- //生成二维码
- startActivity(new Intent(this,CreateActivity.class));
- break;
- }
- }
--------------------------------------------------------------------------------------------------------------------------
二、Android 命名规范
命名规范: 驼峰法, 下划线分割法。
1、Java 类文件
①、Activity:以 Activity 作为后缀,这个相信大家 AS 给你的都帮你做好了。
②、Adapter: 以 Adapter 作为后缀
③、ViewHolder: 以 ViewHolder 作为后缀
④、实体类 Entity:以 Entity 作为后缀
如下,我是以功能模块分包,大神勿喷,个人喜好:
2、xml 文件
①、layout.xml
Activity 的布局文件以 activity_ 开头,AS 提供的。
列表项的布局文件 listview 以 item_list_开头。
②、控件的命名
缩写,这个看个人了,
我的经验,比如:
LayoutView ---- lv
TextView ---- tv
Button ---- btn
ImageView ---- img
切记,不要使用拼音命名,即使英文这么菜的博主我开发都开着有道词典。
最后,编码一定要写注释,你命名的如果英文不是立马能看懂的,请一定要写上注释。
来源: