/*
* 文件名(可选),如 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. 阿里云 部署并开启nodejs应用

    1.下载资源  $ wget https://nodejs.org/dist/v8.11.2/node-v8.11.2-linux-x64.tar.xz 2.xz解压 $ xz -d node-v8. ...

  2. js 根据title从下级往上级查找

    var menuData = [{ name: 'manage', title: '测试1', icon: 'home', }, { title: '测试2', name: 'car-parent', ...

  3. hibernate开发流程

    开发流程,注意:每个hibernate版本在集成的时候是不太一样的.本次使用的是hibernate-distribution-3.6.10.Final-dist 一.开发流程 1)在数据库中创建表,代 ...

  4. Vue中正确使用jQuery的方法

    题主Vue小白,入门demo时想在其中使用jQuery(当然可能是不推荐的做法哈,毕竟俩儿的风格不一样,但万一你就需要呢 _^ ^_),结果遇到问题,最终倒腾解决. 编译报错:$ is undefin ...

  5. Redis(十五):哨兵Sentinel

    Redis哨兵 Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你 ...

  6. linode使用apt更新时停止的错误

    使用ubuntu在更新系统时候,有时候会出现这样的问题: 0% [Connecting to security.ubuntu.com (2001:67c:1560:8001::14)] 问了下客户,他 ...

  7. 使用API Gateway

    http://dockone.io/article/482 [编者的话]本系列的第一篇介绍了微服务架构模式.它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用的理想选择. Do ...

  8. python用time函数计算程序运行时间

    内置模块time包含很多与时间相关函数.我们可通过它获得当前的时间和格式化时间输出. time(),以浮点形式返回自Linux新世纪以来经过的秒数.在linux中,00:00:00 UTC, Janu ...

  9. (转载)C++STL中vector容器的用法

     vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说vec ...

  10. cocos2d-x中CCEditbox导出到lua

    自从工作后感觉时间较少(每天工作9-22,晚上就不想动了,早上想多睡点),工作中用的是 cocos2d-x.cocos2d-x是一款手机游戏引擎,虽然支持lua,但和love2d相比非纯lua游戏引 ...