/*
* 文件名(可选),如 CodingRuler.java
*
* 版本信息(可选),如:@version 1.0.0
*
* 版权申明(开源代码一般都需要添加),如:Copyright (C) 2010-2013 SINA Corporation.
*/ package com.xxx.codestyle; /**
* 类的大体描述放在这里。
*
* <p>
* <b>NOTE:以下部分为一个简要的编码规范,更多规范请参考 ORACLE 官方文档。</b><br>
* 地址:http://www.oracle.com/technetwork/java/codeconventions-150003.pdf<br>
* 另外,请使用 UTF-8 格式来查看代码,避免出现中文乱码。<br>
* <b>至于注释应该使用中文还是英文,请自己行决定,根据公司或项目的要求而定,推荐使用英文。</b><br>
* </p>
* <h3>1. 整理代码</h3>
* <ul>
* <li>1.1. Java 代码中不允许出现在警告,无法消除的警告要用 @SuppressWarnings。
* <li>1.2. 去掉无用的包、方法、变量等,减少僵尸代码。
* <li>1.3. 使用 Lint 工具来查看并消除警告和错误。
* <li>1.4. 使用 Ctrl+Shift+F 来格式化代码,然后再进行调整。
* <li>1.5. 使用 Ctrl+Shift+O 来格式化 Import 包。
* </ul>
*
* <h3>2. 命名规则</h3>
* <h3>2.1. 基本原则</h3>
* <ul>
* <li>2.1.1. 变量,方法,类命名要表义,严格禁止使用 name1, name2 等命名。
* <li>2.1.2. 命名不能太长,适当使用简写或缩写。(最好不要超过 25 个字母)
* <li>2.1.3. 方法名以小写字母开始,以后每个单词首字母大写。
* <li>2.1.4. 避免使用相似或者仅在大小写上有区别的名字。
* <li>2.1.5. 避免使用数字,但可用 2 代替 to,用 4 代替 for 等,如 go2Clean。
* </ul>
*
* <h3>2.2. 类、接口</h3>
* <ul>
* <li>2.2.1. 所有单词首字母都大写。使用能确切反应该类、接口含义、功能等的词。一般采用名词。
* <li>2.2.2. 接口带 I 前缀,或able, ible, er等后缀。如ISeriable。
* </ul>
*
* <h3>2.3. 字段、常量</h3>
* <ul>
* <li>2.3.1. 成员变量以 m 开头,静态变量以 s 开头,如 mUserName, sInstance。
* <li>2.3.2. 常量全部大写,在词与词之前用下划线连接,如 MAX_NUMBER。
* <li>2.3.3. 代码中禁止使用硬编码,把一些数字或字符串定义成常用量。
* <li>2.3.4. 对于废弃不用的函数,为了保持兼容性,通常添加 @Deprecated,如 {@link #doSomething()}
* </ul>
*
* <h3>3. 注释</h3>
* 请参考 {@link #SampleCode} 类的注释。
* <ul>
* <li>3.1. 常量注释,参见 {@link #ACTION_MAIN}
* <li>3.2. 变量注释,参见 {@link #mObject0}
* <li>3.3. 函数注释,参见 {@link #doSomething(int, float, String)}
* </ul>
*
* <h3>4. Class 内部顺序和逻辑</h3>
* <ul>
* <li>4.1. 每个 class 都应该按照一定的逻辑结构来排列基成员变量、方法、内部类等,
* 从而达到良好的可读性。
* <li>4.2. 总体上来说,要按照先 public, 后 protected, 最后 private, 函数的排布
* 也应该有一个逻辑的先后顺序,由重到轻。
* <li>4.3. 以下顺序可供参考:<br>
* 定义TAG,一般为 private(可选)<br>
* 定义 public 常量<br>
* 定义 protected 常量、内部类<br>
* 定义 private 变量<br>
* 定义 public 方法<br>
* 定义 protected 方法<br>
* 定义 private 方法<br>
* </ul>
*
* <h3>5. 表达式与语句</h3>
* <h3>5.1. 基本原则:采用紧凑型风格来编写代码</h3>
* <h3>5.2. 细则</h3>
* <ul>
* <li>5.2.1. 条件表示式,参见 {@link #conditionFun(boolean)}
* <li>5.2.2. switch 语句,参见 {@link #switchFun(int)}
* <li>5.2.3. 循环语句,参见 {@link #circulationFun(boolean)}
* <li>5.2.4. 错误与异常,参见 {@link #exceptionFun()}
* <li>5.2.5. 杂项,参见 {@link #otherFun()}
* <li>5.2.6. 批注,参见 {@link #doSomething(int, float, String)}
* </ul>
*
* @author 作者名
* @since 2013-XX-XX
*/
@SuppressWarnings("unused")
public class CodingRuler { /** 公有的常量注释 */
public static final String ACTION_MAIN = "android.intent.action.MAIN"; /** 私有的常量注释(同类型的常量可以分块并紧凑定义) */
private static final int MSG_AUTH_NONE = 0;
private static final int MSG_AUTH_SUCCESS = 1;
private static final int MSG_AUTH_FAILED = 2; /** 保护的成员变量注释 */
protected Object mObject0; /** 私有的成员变量 mObject1 注释(同类型的成员变量可以分块并紧凑定义) */
private Object mObject1;
/** 私有的成员变量 mObject2 注释 */
private Object mObject2;
/** 私有的成员变量 mObject3 注释 */
private Object mObject3; /**
* 对于注释多于一行的,采用这种方式来
* 定义该变量
*/
private Object mObject4; /**
* 公有方法描述...
*
* @param param1 参数1描述...
* @param param2 参数2描述...
* @param paramXX 参数XX描述... (注意:请将参数、描述都对齐)
*/
public void doSomething(int param1, float param2, String paramXX) {
// 以下注释标签可以通过Eclipse内置的Task插件看到
// TODO 使用TODO来标记代码,说明标识处有功能代码待编写
// FIXME 使用FIXME来标记代码,说明标识处代码需要修正,甚至代码是
// 错误的,不能工作,需要修复
// XXX 使用XXX来标记代码,说明标识处代码虽然实现了功能,但是实现
// 的方法有待商榷,希望将来能改进
} /**
* 保护方法描述...
*/
@Deprecated
protected void doSomething() {
// ...implementation
} /**
* 私有方法描述...
*
* @param param1 参数1描述...
* @param param2 参数2描述...
*/
private void doSomethingInternal(int param1, float param2) {
// ...implementation
} /**
* 条件表达式原则。
*/
private void conditionFun() {
boolean condition1 = true;
boolean condition2 = false;
boolean condition3 = false;
boolean condition4 = false;
boolean condition5 = false;
boolean condition6 = false; // 原则: 1. 所有 if 语句必须用 {} 包括起来,即便只有一句,禁止使用不带{}的语句
// 2. 在含有多种运算符的表达式中,使用圆括号来避免运算符优先级问题
// 3. 判断条件很多时,请将其它条件换行
if (condition1) {
// ...implementation
} if (condition1) {
// ...implementation
} else {
// ...implementation
} if (condition1) /* 禁止使用不带{}的语句 */
condition3 = true; if ((condition1 == condition2)
|| (condition3 == condition4)
|| (condition5 == condition6)) { }
} /**
* Switch语句原则。
*/
private void switchFun() { // 原则: 1. switch 语句中,break 与下一条 case 之间,空一行
// 2. 对于不需要 break 语句的,请使用 /* Falls through */来标注
// 3. 请默认写上 default 语句,保持完整性
int code = MSG_AUTH_SUCCESS;
switch (code) {
case MSG_AUTH_SUCCESS:
break; case MSG_AUTH_FAILED:
break; case MSG_AUTH_NONE:
/* Falls through */
default:
break;
}
} /**
* 循环表达式。
*/
private void circulationFun() { // 原则: 1. 尽量使用for each语句代替原始的for语句
// 2. 循环中必须有终止循环的条件或语句,避免死循环
// 3. 循环要尽可能的短, 把长循环的内容抽取到方法中去
// 4. 嵌套层数不应超过3层, 要让循环清晰可读 int array[] = { 1, 2, 3, 4, 5 };
for (int data : array) {
// ...implementation
} int length = array.length;
for (int ix = 0; ix < length; ix++) {
// ...implementation
} boolean condition = true;
while (condition) {
// ...implementation
} do {
// ...implementation
} while (condition);
} /**
* 异常捕获原则。
*/
private void exceptionFun() { // 原则: 1. 捕捉异常是为了处理它,通常在异常catch块中输出异常信息。
// 2. 资源释放的工作,可以放到 finally 块部分去做。如关闭 Cursor 等。
try {
// ...implementation
} catch (Exception e) {
e.printStackTrace();
} finally { }
} /**
* 其它原则(整理中...)。
*/
private void otherFun() {
// TODO
}
}

Android 代码规范 code style的更多相关文章

  1. Android代码规范

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

  2. Java&Android代码规范

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

  3. Android 代码规范大全

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

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

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

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

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

  6. Java 代码规范,你应该知道的一些工具和用法

    从事编程这个行业,你一定被别人说过或者说过别人这句话:代码要规范!求职面试时也能从 JD 上看到这个要求:要有良好的编程习惯.其实都是在讲代码规范(Code Style)这件事情. 每个人都有自己的编 ...

  7. Java 代码规范,你应该知道的一些工具和用法(转)

    转自:http://yifeng.studio/2017/06/30/coding-with-code-style/ Java 代码规范,你应该知道的一些工具和用法 2017-06-30 从事编程这个 ...

  8. [旧][Android] 命名规范和编码规范

    备注 原发表于2016.05.07,资料已过时,仅作备份,谨慎参考 前言 本文适用范围:已参加项目开发的人 写这篇文章的目的是为方便地对代码进行管理,让整个团队的代码规范化.这里的部分规定可能和你在其 ...

  9. Objective-C 代码规范(Code Style)

    我们写出来的代码会给很多人看,为了使代码清晰简洁,方便阅读理解,都会统一遵从一定的代码规范,Objective-C同样如此. 主要参考规范: 1.Google Objective-C Style Gu ...

随机推荐

  1. python None 和 NaN

    python原生的None和pandas, numpy中的numpy.NaN尽管在功能上都是用来标示空缺数据.但它们的行为在很多场景下确有一些相当大的差异.由于不熟悉这些差异,曾经给我的工作带来过不少 ...

  2. python 操作redis之——HyperLogLog (八)

    #coding:utf8 import redis # python 操作redis之——HyperLogLog r =redis.Redis(host=") # 1.Pfadd 命令将所有 ...

  3. 博客已迁移至512z.com

    本博客已迁移至http://blog.512z.com,此处今后不再更新

  4. Confluence - Online Team Collaboration Tool

    Confluence - 在线的团队协作沟通工具,包含 meeting 管理, wiki 等等功能 https://www.atlassian.com/software/confluence

  5. 最新的Zynq资料整理

    1.Zynq修炼秘籍 基于ZYNQ的FPGA基础入门 基于ZYNQ的Soc入门基础 基于ZYNQ的裸机应用开发 基于ZYNQ硬件的LINUX开发 基于ZYNQ的HLS图像算法设计 基于ZYNQ的图像处 ...

  6. python内置函数之dict()

    class dict(**kwargs) 返回一个字典.本方法用来创建一个字典对象.只能传入一个参数. >>> dict(a=1) {'a': 1} 也可以传入映射函数作为参数 &g ...

  7. lo4j 日志级别

    日志记录器(Logger)的行为是分等级的.如下表所示: 分为OFF.FATAL.ERROR.WARN.INFO.DEBUG.TRACE.ALL或者您定义的级别.Log4j建议只使用四个级别,优先级从 ...

  8. java strtus2 拦截器(Interceptors)

    在strtus2 中有一个比较重要的东西就是拦截器(Interceptors) 拦截器可以做到在已有的业务中插入一块共通的,比如在一个业务中,直接插入一串登录功能,就不用去每个页面一个个去显示是否登录 ...

  9. [systemd]Linux系统启动之systemd

    参照:https://wiki.debian.org/systemd 最近在添加板子应用程序自启动的时候,发现在rcN.d中的符号链接并没有用,文件系统为Debian Jessie 8, 后来从同事那 ...

  10. Java的图形界面依然是跨平台的

    Awt:抽象窗口工具箱,它由三部分组成: ①组件:界面元素: ②容器:装载组件的容器(例如窗体): ③布局管理器:负责决定容器中组件的摆放位置. 图形界面的应用分四步: ① 选择一个容器: ⑴wind ...