Activity.onCreate(),Fragment.onActivityCreated(),紧跟成员变量后,方法内部保持简单,尽量只调用initXXX()方法,如:initData(),initView();
调用方法保持“临近原则”,被调用的方法,放在调用方法下方;
单个方法体不要过长;
代码任何地方不要拼错单词(拼写错误)
统一调整IDE的Tab缩进为4个空格;
布局文件中的id命名:下划线命名法 使用下划线命名法,前缀+逻辑名称;
布局文件命名layout: 使用前缀_逻辑名称命名,单词全部小写,单词间以下划线分割;
Activity activity_
Fragment fragment_
Include include_
Dialog dialog_
PopupWindow popup_
Adapter item_
资源文件命名:使用 前缀_用途 命名,单词全部小写,单词间以下划线分割。
类和接口命名: 使用驼峰规则,首字母必须大写,使用名词或名词词组。要求简单易懂,富于描述,不允许出现无意义或错误单词。
Application类 Application为后缀标识 XXXApplication
Activity类 Activity为后缀标识 闪屏页面类SplashActivity
公共方法类 Utils为后缀标识
线程池管理类 ThreadPoolManager
日志工具类 LogUtils
Service类 以Service为后缀标识 播放服务:PlayService
BroadcastReceiver类 以Broadcast为后缀标识 时间通知:TimeBroadcast
直接写的共享基础类 以Base为前缀 BaseActivity,BaseFragment
方法的命名: 使用驼峰规则,首字母必须小写,使用动词。
initXX() 初始化相关方法,使用init为前缀标识,如初始化布局initView()
httpXX() http业务请求方法,以http为前缀标识
getXX() 返回某个值的方法,使用get为前缀标识
saveXX() 与保存数据相关的,使用save为前缀标识
deleteXX() 删除操作
resetXX() 对数据重组的,使用reset前缀标识
clearXX() 清除数据相关的
isXX() 方法返回值为boolean型的请使用is或check为前缀标识
processXX() 对数据进行处理的方法,尽量使用process为前缀标识
displayXX() 弹出提示框和提示信息,使用display为前缀标识
drawXXX() 绘制数据或效果相关的,使用draw前缀标识
变量命名:使用驼峰规则,首字母必须小写,使用名词或名词词组。
成员变量命名,自定义变量前添加m前缀,布局控件变量不用添加m前缀;
常量命名: 全部大写,单词间用下划线隔开.
方法:
拆分臃肿方法,每个方法只作一件事
做同一个逻辑的方法,尽量靠近放到一块,方便查看
所有意义数字全部抽取到Constant公共类中,避免散布在各位类中。
空行:空行将逻辑相关代码段隔开,简洁清楚,提高可读性
成员变量之间,根据业务形成分组加空行
方法之间加空行
——————————————————————————>
init(){
findView(); //初始化控件
initView(); //为控件赋值
initListener();//监听事件
}
initListener() 经常忘记给控件设置监听。
为什么要把activity修改成ui 因为activity 就是用来显示UI的。
1)Activity中的控件点击事件,不再单独写,要写的有条理!
所有的点击事件onClickListener()事件都要进行抽取,写在switch里面;
2)拼写异常:processOrderSampleData() 不能加s,代码不规范的错误的。
对于成员变量的重复,不用修改变量名,使用代码块把成员变量转化成局部变量即可。
例如:
case 1:{ Intent intent=new Intent();}break;
case 2:{ Intent intent=new Intent();}break; 此时两个intent变量名不重复的。
4)ListView的优化:
ViewHolder viewHolder=null;
以后不进行赋值操作,没有实际意义。
5)常用的包名:
adapter 列表适配器
base MyApplication BaseUI(抽取UI父布局) BaseFragment 这三个类
bean 把公共的响应头抽取出来
constant url 里面可能会有多个常量类 url常量类、文件路径常量类
fragment
manager 主要用于网络请求
ui 比activity这个单词好用多了
utils 工具类
views 自定义控件
engine 用于处理业务逻辑
6)项目包名: package="cn.lichaodai"
顶级域名(cn/com)+公司名+项目名:com.nengwu.xpg 公司可能有多个项目
以什么开头,一定要注意
8)对条目的判断:RecycleView/ListView
getItemCount( ){
//判断集合是否为空,如果为空,返回0,否则返回集合的长度,这个方法好
//一会应用到自己的项目中;
return dataList==null:0? dataList.size( );
}
——————————————————————————>
常用的方法:
NetUtils工具类,
loadXXXData()
processXXXData()
processXXXUI()显示UI
——————————————————————————>
对公共的响应头进行抽取,每次都会返回的
public class BaseEntity {
public String msg; //返回的信息
public String code; //响应码
/**
* 返回数据是否正常
* @return
*/
public boolean isSuccess() {
return code.equals("-1") ? true : false;
}
/**
* 返回提示
* @return
*/
public String getResultMsg() {
String msg = "";
switch (code) {
case "":
break;
}
return msg;
}
}
//这是对请求数据封装实体的处理,都是这样封装的,一定要学会。
public class LoginEntity extends BaseEntity {
public Entity entity;
public class Entity{
public String isnew;
public String phone;
}
}
——————————————————————————>
接口:接口中的成员变量 都是publish static 类名.方法名( ) 这种使用方式
publish interface Constants{ } //定义一个常量接口,所有的成员变量,都是公共和静态的。
常量全部都是定义在接口中的。
5)接口里面:public abstract 这两个字段不用写的 默认。
追求代码的规范和代码结构的规范:
1)常量的命名全部都是大写的 网络请求地址是常量,
2)网络请求地址:主机地址 / 某一个具体的模块 / 模块下具体的接口,
3)直接在接口中拼接请求地址,不要在Activity中拼接请求地址了,
4)Host+具体的请求地址接口 每一个网络地址上都要写注释,
String Host=http://www.xunpige.com/app //这里是主机地址 ,
5)定义成接口,
//退出登录
public static final String EXIT_LOGIN = "/users/exit";
//获取首页轮播图
public static final String GET_AD = "/homes/ad";
每个依赖包是做什么的?
setData( )是哪个类中的方法?
代码的通用性如何?
如果条目为空,怎么处理? 传入一个空的布局
在构造函数里面传递数据为空的布局 这一点不太理解。