一 概述
项目结构和代码规范决定了项目的质量,为了后面更好的扩展和封装,代码规范化是必不可少的
二 MVP 最小可实现目标
将项目分为了四个层级:模型层、接口层、核心层、界面层。模型层定义了所有的模型;接口层封装了服务器提供的API;核心层处理所有业务逻辑;界面层就处理界面的展示。几个层级之间的关系如下图所示:
在As里面的包的表现形式就是 Model Api Core View,如下图示:
三 代码书写规范
可以参考底层代码书写规范:
成员变量前面加m,希望子类重写用protect修饰,希望外部引用用public,不希望外部类调用用private 局部变量和方法用小写(驼峰式命名),类用大写(驼峰式命名) 常量全部大写
class ViewGroup{
protected ArrayList<View> mDisappearingChildrens;
TouchTarget target = mFirstTouchTarget;
public boolean getClipChildren () {
return ((mGroupFlags & FLAG_CLIP_CHILDREN) != 0 );
}
}
TAG 统一用 常量修饰,标志位最好可以用二进制(用过&和| 代替 == ), 计算机最后都要转化为二进制计算 这样的性能比较好
private static final String TAG = "ViewGroup" ;
private static final int FLAG_CLIP_CHILDREN = 0x1 ;
static final int FLAG_CLIP_CHILDREN2 = FLAG_CLIP_CHILDREN << 1 ;
public boolean getClipChildren () {
return ((mGroupFlags & FLAG_CLIP_CHILDREN) != 0 );
}
TAG 统一用 常量修饰,标志位最好可以用二进制(用过&和| 代替 == ), 计算机最后都要转化为二进制计算 这样的性能比较好
private static final String TAG = "ViewGroup" ;
private static final int FLAG_CLIP_CHILDREN = 0x1 ;
static final int FLAG_CLIP_CHILDREN2 = FLAG_CLIP_CHILDREN << 1 ;
public boolean getClipChildren () {
return ((mGroupFlags & FLAG_CLIP_CHILDREN) != 0 );
}
用于回调的接口最好写在回调的类里面去,参考View的setOnclickListener的写法
class View{
public OnClickListener mOnClickListener;
public interface OnClickListener {
/**
* Called when a view has been clicked.
*
* @param v The view that was clicked.
*/
void onClick(View v);
}
public void setOnClickListener (OnClickListener l) {
if (!isClickable()) {
setClickable(true );
}
getListenerInfo().mOnClickListener = l;
}
}
public final class R {
public static final class anim {
public static final int abc_fade_in = 0x7f040000 ;
public static final int abc_fade_out = 0x7f040001 ;
}
public static final class attr {
public static final int actionBarDivider= 0x7f040000 ;
}
}
JavaDoc注解,个人觉得除了返回的参数和结果会注解外,还要知道这个方法在哪个线程运行 注解去规避一些空指针问题,比如如下方法,IDE会用警告的方式提醒你返回的参数不能为空
@NoNull
public View getCurrentFocus () {
return mWindow != null ? mWindow.getCurrentFocus() : null ;
}
bug最好在代码上进行注释,如下图:
四、理想
需要知道写的方法在哪个线程执行,最好做到数据在异常线程,View的显示在主线程去做(MVC) 程序=数据+算法,数据驱动算法,如果数据错误,则相对应的View要做异常处理
—- 未完待续,请网友如果有更好的规范,在底下评论帮我指出,一起完善,谢谢
朋友们也可以加入群一起讨论学习(群号:499537304)