项目中直接导入Square的代码风格文件。(不导入Google的原因是Square同时提供了Java和Android两套统一风格,Google只提供了一套)

Square Code Styles

Goolge Code Styles

导入后会有很多好处,如注释规范化,import规范,方法排序,统一自动断行(PC屏幕较宽,建议断行字符数设置为120[File->Setting–>Code Style,右边Right Margin Columns])等

而在编码保存或提交时还能自动格式化代码,删除多余空行,多余缩进,无效注释等不规范的书写。

建议阅读Google Java Style 中文翻译文章 :

Android基本规范

在开发中,遵循良好的编码规范,不仅仅可以提高代码的可读性,减小出错的可能性,同时也降低与其他开发者交流的成本,易于他人的维护与协作。 本文简单总结了 Android 开发中的一些代码规范,供开发者参考。

基本要求

  • 除了注释,代码中不出现中文
  • 每个类写上必要的注释,类的说明,作者,联系方式
  • 方法加上必要的注释说明,方便以后维护

包管理

  1. base: 存放基础类的包,里面的类以 Base 为前缀,例如 BaseActivity
  2. activity: 存放 activity 的包,每个 activity 命名以Activity结尾,例如 MainActivity;
  3. fragment: 存放 fragment的包,每个 fragment 命名以 Fragment 结尾,例如 ChatFragment;
  4. receiver: 存放 receiver 的包;
  5. service: 存放 service 的包;
  6. adapter: 存放 adapter 的包,每个 adapter 命名以 Adapter 结尾,例如 EventItemAdapter;
  7. common: 存放一些公共常量,例如后端接口、SharedPreferenceKeyIntentExtra 等;
  8. utils: 存放工具类的包,比如常见的工具类:LogUtilsDateUtils
  9. entity: 存放实体类的包;
  10. widget: 存放自定义View的包;

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

命名

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

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

命名的基本原则:

  • 尽可能地使用统一的命名规范;
  • 不使用汉语拼音;
  • 除了常见的英文缩写,尽量少地使用缩写;
1. 包命名
  • 小写字母,参见上文包管理;
  • 连续的单词直接连接起来,不使用下划线;
2. Java 类命名
  • 大驼峰命名 UserListAdapter
  • 除常见的缩写单词以外,不使用缩写,缩写的单词每个字母都大写 RequesURLList
  • 公共的工具类建议以 Utils、 Manager 为后缀,如 LogUtils
  • 接口命名遵循以上原则,以 able 或 ible 为后缀;
3. 变量命名
  • 成员变量命名

    • 小驼峰命名;
    • 不推荐使用谷歌的前面加 m 的编码风格(如果使用团队中使用 m ,则统一使用);
  • 常量命名
    • 单词每个字母均大写;
    • 单词之间下划线连接;
  • 控件变量命名
    • 小驼峰命名;
    • 建议使用 控件缩写+逻辑名称 格式,例如 tvPostTitleetUserName
    • 对应的控件的 id 的命名控件缩写_逻辑名称,单词均小写,用下划线连接,例如:tv_post_titleet_user_name
    • 常见的控件缩写如下:
Linearlayout ll
RelativeLayout rl
TextView tv
EditText et
Button btn
ImageView iv
CheckBox chb
ListView lv
GridView gv
RadioButton rb
控件
缩写
4. 方法命名
  • 小驼峰命名;
  • Getter 和 Setter 方法,推荐使用自动生成的,写起来也很方便。注意,bool 类型的变量 Getter 方法写成 isTrue 这种;
  • 方法名应当保证见名知义的原则,尽量不使用 or 或者 and ,遵循 “do one thing” 原则;
5. 布局文件命名
  • activity、fragment 布局文件名以对应的类别名称为前缀,逻辑名称放在其后,以下划线连接,例如 activity_homefragment_chat_list,方便查找;
  • ListView、GridView 的 item 布局文件建议以 list_itemgird_item为前缀,加上对应的逻辑名称,例如 list_item_postgrid_item_photo
  • Dialog的布局文件以 dialog 为前缀,逻辑名称放在其后,下划线连接,例如 dialog_warnning;
  • 包含项布局命名以 include 开头,在加上对应的逻辑名称,例如 include_foot
  • 控件的 id 命名参见控件变量命名;
6. 资源命名
  • 图标资源以 ic 为前缀,例如 ic_chat ,指聊天图标;
  • 背景图片以 bg 为前缀,例如 bg_login ,指的是登录页的背景图;
  • 按钮图片以 btn 为前缀,例如 btn_login ,指的是登录按钮的图片,不过这只有一种状态,需要加上状态的可以在后面添加,例如 btn_login_pressed ,表示登录按钮按下的图片;
  • 当使用 shape 和 selector 文件为背景或者按钮时,命名参照以上说明;

参考资料

本文参考了:

Java&Android代码规范的更多相关文章

  1. Android代码规范

    Android代码规范——文章来源<IT蓝豹>http://itlanbao.com/preview.aspx#1,0 [-]一Import的次序二缩进Indentation总则示例代码规 ...

  2. java & android 开发规范手册

    阿里巴巴Java开发手册(终极版)https://pan.baidu.com/s/1c1UQM7Q 阿里巴巴Java开发规约插件p3cGitHub:https://github.com/alibaba ...

  3. android代码规范和studio配置CodeStyle

    studio配置CodeStyle可以很好的帮助我们检测代码规范性,保持大家的代码统一,来看看怎么配置和使用吧 代码规范,自己公司的一套 代码规范 一.      简介 A.    目的 本文提供一整 ...

  4. Android 代码规范大全

    前言 虽然我们项目的代码时间并不长,也没经过太多人手,但代码的规范性依然堪忧,目前存在较多的比较自由的「代码规范」,这非常不利于项目的维护,代码可读性也不够高, 此外,客户端和后端的研发模式也完全不同 ...

  5. Android 代码规范 code style

    /* * 文件名(可选),如 CodingRuler.java * * 版本信息(可选),如:@version 1.0.0 * * 版权申明(开源代码一般都需要添加),如:Copyright (C) ...

  6. Android代码规范----按钮单击事件的四种写法

    [前言] 按钮少的时候用第三种的匿名内部类会比较快,比如写demo测试的时候或者登陆界面之类. 按钮多的时候一般选择第四种写法. 一.第一种写法:在XML文件中声明onClick属性(很少用) 在XM ...

  7. JAVA总结--代码规范

    一.命名规范 1.标识符:统一.达意.简洁 统一:一个词有多种表达方式,不求最好,但求统一:例:供应商,既可以用supplier,也可以用provider,选择一种统一使用: 达意:明确表达其意义,正 ...

  8. java注释代码规范

    //收集了一小部分,忘记的时候过来查一下 java--hadoop部分 /** * 此类用来处理DNS原始日志:统计给定域名平均响应时延 * @param Input * @param Output ...

  9. java idea 代码规范插件

    推荐阿里的 p3c https://github.com/alibaba/p3c

随机推荐

  1. cf580E. Kefa and Watch(线段树维护字符串hash)

    题意 $n$个数的序列,$m + k$种操作 1.$l , r, k$把$l - r$赋值为$k$ 2.$l, r, d$询问$l - r$是否有长度为$d$的循环节 Sol 首先有个神仙结论:若询问 ...

  2. PostgreSQL函数如何返回数据集 [转]

    PostgreSQL函数如何返回数据集 以下主要介绍PostgreSQL函数/存储过程返回数据集,或者也叫结果集的示例. 背景: PostgreSQL里面没有存储过程,只有函数,其他数据库里的这两个对 ...

  3. MAC无法确认开发者身份

    网上下载的软件,如果来自身份不明的开发者,在MAC上打开时会提示无法确认开发者的身份,在网上找到了一篇尝试解决的文章,文章链接地址为http://jingyan.baidu.com/article/f ...

  4. uvm_reg_defines——寄存器模型(四)

    文件: src/marcos/uvm_reg_defines 类: 无 该文件是寄存器模型src/reg/* 文件对于的宏文件,主要定义了寄存器地址位宽,寄存器数据位宽,字节的大小.计算机从最初的8, ...

  5. Jenkins结合ant传递参数

    需求: 使用Jenkins的「参数化构建过程」,由用户手动输入参数.通过ant脚本接收这个参数,并输出(当然,中间也可以进行复杂的处理,这里为了说明问题,仅做简单的输出). 1.基础环境 Jenkin ...

  6. The Django Book - 第四章 模板2

    模板(相应)使用的几种方式: 1.使用HttpResponse返回字符串HTML from django.http import HttpResponse def current_datetime(r ...

  7. 微信程序开发系列教程(三)使用微信API给微信用户发文本消息

    这个系列的第二篇教程,介绍的实际是被动方式给微信用户发文本消息,即微信用户关注您的公众号时,微信平台将这个关注事件通过一个HTTP post发送到您的微信消息服务器上.您对这个post请求做了应答(格 ...

  8. 广播接收者 BroadcastReceiver

    1. 分为动态注册和静态注册, 静态注册在清单文件里配置即可.动态创建为代码手动添加. 在锁屏广播中, 使用静态创建消息接受不成功, 原因未知. 动态即可. 代码如下: 2. 创建类, 继承与Broa ...

  9. 模板类 vector

    概要 介绍一下模板类 vector 的常用操作,以及一个应用举例,顺时针打印矩阵.   基本定义 模板类 vector 是一种动态数组,它是使用 new 创建动态数组的替代品,实际上,vector 也 ...

  10. druid 配置WebStatFilter 网络统计以及监控

    WebStatFilter用于采集web-jdbc关联监控的数据. web.xml配置 <filter> <filter-name>DruidWebStatFilter< ...