您的位置:首页 > 其它

我的规范小结

2016-02-16 11:45 330 查看

一 概述

项目结构和代码规范决定了项目的质量,为了后面更好的扩展和封装,代码规范化是必不可少的

二 MVP 最小可实现目标

将项目分为了四个层级:模型层、接口层、核心层、界面层。模型层定义了所有的模型;接口层封装了服务器提供的API;核心层处理所有业务逻辑;界面层就处理界面的展示。几个层级之间的关系如下图所示:



在As里面的包的表现形式就是 Model Api Core View,如下图示:



如上图片来自:http://keeganlee.me/post/android/20150605 这位大神

三 代码书写规范

可以参考底层代码书写规范:

成员变量前面加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;
}

}


常量类类似R文件的写法

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)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: