文档章节

Android_编码规范

luhang
 luhang
发布于 2017/02/09 13:27
字数 1498
阅读 1
收藏 0

编码规范

编码规范化,代码可能不是你自己一个人写,保证代码可读性是非常必要的。而规范存在的意义就是淡化每个人的习惯而达到统一。不多说,下面就介绍Android的编码规范

  • 除了注释,代码中不出现中文

  • 每个类写上必要的注释,类的说明,作者,联系方式

  • 方法加上必要的注释说明,方便以后维护

包管理

  • base:存放基础类的包,里面的类以Base为前缀,例如BaseActivity;

  • activity:存放activity的包,每个activity命名以Activity结尾,例如MainActivity;

  • fragment:存放fragment的包,每个fragment命名以Fragment结尾,例如ChatFragment;

  • receiver:存放receiver的包;

  • service:存放service的包;

  • adapter:存放adapter的包,每个adapter命名以Adapter结尾,例如EventItemAdapter;

  • common:存放一些公共常量,例如后端接口、SharedPreferenceKey、IntentExtra等;

  • utils:存放工具类的包,比如常见的工具类:LogUtils、DateUtils;

  • entity:存放实体类的包;

  • widget:存放自定义View的包;

以上是一些常见的包,但不局限于此,视项目的具体情况而定。

命名

大驼峰命名(UpperCamelCase):每个单词的第一个字母都大写。

小驼峰命名(lowerCamelCase):除第一个单词以外,每一个单词的第一个字母大写。

命名的基本原则:

  • 尽可能地使用统一的命名规范;

  • 不使用汉语拼音;

  • 除了常见的英文缩写,尽量少地使用缩写;

包命名

  • 小写字母,参见上文包管理;

  • 连续的单词直接连接起来,不使用下划线;

Java类命名

  • 大驼峰命名 UserListAdapter;

  • 除常见的缩写单词以外,不使用缩写,缩写的单词每个字母都大写 RequesURLList;

  • 公共的工具类建议以Utils、Manager为后缀,如LogUtils;

  • 接口命名遵循以上原则,以able或ible为后缀;

变量命名

  • 成员变量命名


    • 小驼峰命名;

    • 不推荐使用谷歌的前面加m的编码风格(如果使用团队中使用m,则统一使用);

  • 常量命名


    • 单词每个字母均大写;

    • 单词之间下划线连接;

  • 控件变量命名


    • 小驼峰命名;

    • 建议使用 控件缩写+逻辑名称 格式,例如 tvPostTitle、etUserName;

    • 对应的控件的id的命名控件缩写_逻辑名称,单词均小写,用下划线连接,例如:tv_post_title、

    • et_user_name;

  • 常见的控件缩写如下:
    控件 缩写
    Linearlayout ll
    RelativeLayout rl
    TextView tv
    EditText et
    Button btn
    ImageView iv
    CheckBox chb
    ListView lv
    GridView gv
    RadioButton rb

方法命名

  • 小驼峰命名;

  • Getter和Setter方法,推荐使用自动生成的,写起来也很方便。注意,bool类型的变量Getter方法写成isTrue这种;

  • 方法名应当保证见名知义的原则,尽量不使用or或者and,遵循“do one thing”原则;

布局文件命名

  • activity、fragment布局文件名以对应的类别名称为前缀,逻辑名称放在其后,以下划线连接,例如activity_home、fragment_chat_list,方便查找;

  • ListView、GridView的item布局文件建议以list_item、gird_item为前缀,加上对应的逻辑名称,例如
    list_item_post、grid_item_photo;

  • Dialog的布局文件以dialog为前缀,逻辑名称放在其后,下划线连接,例如dialog_warnning;
    包含项布局命名以include开头,在加上对应的逻辑名称,例如include_foot

  • 控件的id命名参见控件变量命名;

资源命名

  • 图标资源以ic为前缀,例如ic_chat,指聊天图标;

  • 背景图片以bg为前缀,例如bg_login,指的是登录页的背景图;

  • 按钮图片以btn为前缀,例如btn_login,指的是登录按钮的图片,不过这只有一种状态,需要加上状态的可以在后面添加,例如btn_login_pressed,表示登录按钮按下的图片;

  • 当使用shape和selector文件为背景或者按钮时,命名参照以上说明;

项目架构

项目框架
一个好的项目架构可以降低项目的复杂性,并且易扩展、易维护,耦合低,结构清晰,功能内聚。
MVCMVPMVVM还有一些设计模式,结合你app的业务,自行选择一个最合适的一条路走到黑,建议不要“混搭”。

开源框架

开源框架的选择分两大类,一是权威性毫无争议,放心选择的这类帮助我们快速开发的,比如:

  • 网络 Retrofit + OkHttp+ RxJava、Volley、android-async-http

  • 依赖注入 Dagger2、ButterKnife、RoboGuice

  • 事件总线 otto、EventBus

  • 图片加载 Fresco、Glide、Picasso

  • 数据库 GreenDao、Ormlite、LitePal

  • 日志输出 logger、LogUtils

  • 当然不能忘了Google提供的兼容support全家桶

还有一类框架虽然不是毫无争议,但是也能极大节省我们的时间,提升开发效率,对于这类项目,要在Github上长期淘宝了。找那种star很多,issues解决很快,长期维护的项目,这种坑会比较少。

代码细节

抽取基类
即使目前你没有需要,也一定要抽取一个BaseActivity和BaseFragment,因为早晚会用到,切记!

比如:

public abstract class BaseActivity extends Activity{

    @Override
    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
        init();
    }

    private void init() {
        setContentView(R.layout.activity_main);
        initView();
        initData();
        initListener();
    }

    /**
     * 初始化布局
     */

    protected abstract void initView();

    /**
     * 初始化数据
     */

    protected abstract void initData();

    /**
     * 初始化侦听
     */

    protected abstract void initListener();

}

BaseFragment也同理,随着业务的增加和抽象,基类会继续扩展。其实不仅仅是BaseActivityBaseFragment,如果你一个业务模块中有很多相似和相同的逻辑,也可以抽取一个BaseXXX这是非常好的一个习惯。

还有一些建议,不做展开,大家请自行搜索:

  • Android Studio上好用的插件

  • selector

  • 图片的.9处理

  • Resources xml文件中,记得用注释分割每个类用到的资源,建议不共用

  • 慎用static关键字

  • 定期code review,不断代码重构

                             转载 文/MeloDev(简书作者)
原文链接:http://www.jianshu.com/p/549c2fc9adfe




本文转载自:http://blog.csdn.net/qq_18413391/article/details/52770282

共有 人打赏支持
luhang
粉丝 3
博文 15
码字总数 571
作品 0
长宁
程序员
Android:你不能忽略的代码命名规范

前言 Android代码规范内容非常多,但对我们最有用& 最有影响的莫过于 Android代码的命名规范 可是,有很多人容易忽略代码的命名规范,从而导致代码的可读性 & 维护性非常差,最终导致开发效率...

Carson_Ho
08/08
0
0
Android ------ 美团的Lint代码检查实践

概述 Lint是Google提供的Android静态代码检查工具,可以扫描并发现代码中潜在的问题,提醒开发人员及早修正,提高代码质量。除了Android原生提供的几百个Lint规则,还可以开发自定义Lint规则...

切切歆语
04/16
0
0
移动开发:美团外卖Android Lint代码检查实践

概述 Lint是Google提供的Android静态代码检查工具,可以扫描并发现代码中潜在的问题,提醒开发人员及早修正,提高代码质量。除了Android原生提供的几百个Lint规则,还可以开发自定义Lint规则...

meituantech
04/13
0
0
Android系统源码分析团体项目BeesAndroid正式上线啦

嗨,BeesAndroid开源技术小组正式成立啦,Bees,即蜜蜂,取义分享、合作与奉献的意思,这也是BeesAndroid小组的宗旨,我们第一个团体项目BeesAndroid也于2018年3月6日同步上线,该项目的前 ...

郭孝星
03/08
0
0
【掘金小报】 第十五期 用 slack 和 hubot 搭建你自己的运维机器人

掘金小报主打分享优质深度技术内容,技术内容分:前端、后端、Android、iOS、产品设计、工具资源和一些有趣的东西。 与标题相关文章为最后一篇文章。 【译】带你入门 CSS Grid 布局 三月中旬...

膜法小编
2017/05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu18.04 安装最新版WPS

1.手动卸载libreoffice:sudo apt-get remove --purge libreoffice* 2.官网下载WPS和字体: WPS:http://wps-community.org/download.html 字体:http://wps-community.org/download.html?vl......

AI_SKI
41分钟前
3
0
数据结构(算法)-图(深度优先搜索 DFS)

#include <iostream>using namespace std;#define MaxVex 30typedef char VertexType;typedef struct vexNode adjList[MaxVex];struct edgeNode{int adjvex;//邻接点......

ashuo
46分钟前
0
0
1024 搞事倒计时!距程序员节还有 2 天!

详情请关注微信公众号:七牛云

七牛云
46分钟前
0
0
Java泛型方法

1. 定义泛型方法 (1) 如果你定义了一个泛型(类、接口),那么Java规定,你不能在所有的静态方法、静态初块等所有静态内容中使用泛型的类型参数。例如: public class A<T> { public st...

两广总督bogang
47分钟前
2
0
如何解决JavaScript中0.1+0.2不等于0.3

console.log(0.1+0.2===0.3)// true or false??   在正常的数学逻辑思维中,0.1+0.2=0.3这个逻辑是正确的,但是在JavaScript中0.1+0.2!==0.3,这是为什么呢?这个问题也会偶尔被用来当...

peakedness丶
47分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部