代码规范

来源:互联网 发布:mac改了用户名进不去 编辑:程序博客网 时间:2024/06/04 18:24

/** TAG */
private final String TAG = getClass().getSimpleName();
/** 是否为编码规范 */
private boolean m_bIsCoding = true;
/** 标题 */
private TextView m_txtTitle  = null;
/** 编码规范 */
private WebView  m_webCoding = null;
/** 示例代码 */
private WebView  m_webSample = null;
/** 切换 */

private Button   m_btnSwitch = null;


public class SampleCode{/** 圆周率 */public static final double PI = 3.1415926535897932384626433832795;/** 整型值 */private int     m_nValue   = 0;/** 字符值 */private char    m_cValue   = '0';/** 浮点值 */private float   m_fValue   = 0.0f;/** 双精度值 */private double  m_dValue   = 0.0;/** 布尔值 */private boolean m_bValue   = true;/** 字符串值 */private String  m_strValue = "";/** 是否为 16 进制 */protected boolean m_bHex = false;/** * 获取整型值 * @return */public int getNValue(){return m_nValue;}/** * 获取字符串值 * @return */public String getStrValue(){return m_strValue;}/** * 设置整型值 * @param n */public void setNValue(final int n){m_nValue = n;}/** * 设置字符串值 * @param str */public void setStrValue(final String str){if (str == null) return;m_strValue = str;}/** * 是否为 16 进制 * @return */public boolean isHex(){return m_bHex;}/** * 构造函数 * @param n 整型值 */public SampleCode(final int n){// 整型值m_nValue = n;}/** * 加法 * @param n 整数 */private void add(final int n){m_nValue += n;}/** * 加法 * @param n1 整数 1 * @param n2 整数 2 * @return 结果 */public int add(final int n1, final int n2){return n1 + n2;}/** * 加法 * @param n  整数 * @param ns 整数数组 * @return 是否相加成功 */public boolean add(final int n, final int[] ns){try{if (n < 1 || n > ns.length){return false;}m_nValue = 0;for (int i = 0; i < n; i++){// 加法add(ns[i]);}}catch (Exception e){e.printStackTrace();return false;}return true;}}

package cn.tbtech.codingruler;/** * 类的基本描述写在这里... * <p> * <h3>1. 代码</h3> * <ul> *     <li>1.1. 请使用 UTF-8 格式来编写代码, 避免出现中文乱码 *     <li>1.2. 代码缩进必须使用 Tab, 而不能使用空格, 且代码布局尽量对齐 *     <li>1.3. 代码中不允许出现警告(Java 代码中无法消除的警告要用 @SuppressWarnings) *     <li>1.4. 去掉无用的包(命名空间), 方法(函数), 变量(字段)等, 减少僵尸代码 *     <li>1.5. 在 Eclipse 中使用 Lint 工具来查看并消除警告和错误 *     <li>1.6. 在 Eclipse 中使用 Ctrl+Shift+F 来格式化代码, 然后再进行调整 *     <li>1.7. 在 Eclipse 中使用 Ctrl+Shift+O 来格式化 import 包 * </ul> *  * <h3>2. 命名规则</h3> *     <h3>2.1. 基本原则</h3> *     <ul> *         <li>2.1.1. 变量, 方法, 类和接口等, 其命名要表义, 不能使用 name1, name2 等无直接意义的命名 *         <li>2.1.2. 命名不能太长, 适当使用简写或缩写, 如 nMaximumNumber 简写为 nMaxNum *         <li>2.1.3. 方法名以小写字母开始, 其后每个单词首字母大写(即使用驼峰表示法), 如 doSomething *         <li>2.1.4. 方法名避免使用相似或者仅在大小写上有区别的名字 *         <li>2.1.5. 方法名避免使用数字, 但可用 2 代替 to, 用 4 代替 for 等, 如 str2int *     </ul> *  *     <h3>2.2. 类, 接口</h3> *     <ul> *         <li>2.2.1. 所有单词首字母都大写, 使用能确切表示该类, 接口含义, 功能等的词, 一般采用名词 *         <li>2.2.2. 接口带 I 或 On 等前缀, 或 Listener 等后缀, 如 OnClickListener *     </ul> *  *     <h3>2.3. 常量, 变量</h3> *     <ul> *         <li>2.3.1. 常量全部大写, 在单词与单词之间用下划线连接, 如 MAX_NUMBER *         <li>2.3.2. 变量前使用前缀 m_ 标识为成员变量, 如果是静态成员变量则为 ms_, 如 m_strUserName, ms_instance *         <li>2.3.3. 普通变量使用前缀 n, f, d, b, bt, str 等标识变量的数据类型, 如 nNum, strName *         <li>2.3.4. 某些局部变量可以根据实际情况灵活变通, 比如用于循环中的 i, j, k 等变量 *         <li>2.3.5. 代码中禁止使用硬编码, 应把一些数字或字符串定义成常用量, 如圆周率等 *         <li>2.3.6. 对于废弃不用的函数, 为了保持兼容性, 通常添加 @Deprecated, 如 {@link #doSomething()} *     </ul> * * <h3>3. 注释</h3> *     请参考 {@link #SampleCode} 类的注释 *     <ul> *     <li>3.1. 所有的注释, 不分编程语言(C, C++, Java, Objective-C 等), 均采用 Javadoc 格式 *     <li>3.2. 在代码的关键函数部分, 逻辑处理部分, 复杂算法部分等, 必须添加注释 *     <li>3.3. 代码中的注释尽量做到"宁多勿少", 必要的时候还必须配套相应的说明文档 *     <li>3.4. 常量注释, 参见 {@link #PUB_VAR} *     <li>3.5. 变量注释, 参见 {@link #m_object0} *     <li>3.6. 函数注释, 参见 {@link #doSomething(boolean, double, String)} *     <li>3.7. 注释语言, 根据项目的要求来决定应该使用中文还是英文, 对于容易产生歧义的注释推荐使用英文 *     <li>3.8. 标点符号, 如果使用中文进行注释, 为了保持对齐应该使用英文标点符号 *     </ul> *  * <h3>4. Class 内部顺序和逻辑</h3> * <ul> *     <li>4.1. 每个 class 都应该按照一定的逻辑结构来排列成员变量, 方法, 内部类等, 从而达到良好的可读性 *     <li>4.2. 总体上来说, 要按照先 private, 然后 protected, 最后 public, 先常量后变量 *     <li>4.3. 函数的排布也应该有一个逻辑的先后顺序, 由轻到重, 或按照调用关系的先后顺序排列 *     <li>4.4. 以下顺序可供参考:<p> *         定义 TAG, 一般为 private(可选)<br> *         定义 private 常量<br> *         定义 protected 常量<br> *         定义 public 常量<br> *         定义 private 变量<br> *         定义 protected 变量<br> *         定义 public get 方法<br> *         定义 public set 方法<br> *         定义 class 的构造方法<br> *         定义 private 方法<br> *         定义 protected 方法<br> *         定义 public 方法<br> *         定义 private 内部类, 参见 {@link #CodingRulerInternal}<br> * </ul> *  * <h3>5. 表达式与语句</h3> *     <h3>5.1. 基本原则: 采用紧凑型风格来编写代码</h3> *     <h3>5.2. 细则</h3> *     <ul> *         <li>5.2.1. 条件表示式, 参见 {@link #conditionFun()} *         <li>5.2.2. switch 语句, 参见 {@link #switchFun()} *         <li>5.2.3. 循环语句, 参见 {@link #circulationFun()} *         <li>5.2.4. 错误与异常, 参见 {@link #exceptionFun()} *         <li>5.2.5. 其它, 参见 {@link #doSomething(boolean, double, String)} *     </ul> */@SuppressWarnings("unused")public class CodingRuler{/** TAG */private final String TAG = getClass().getSimpleName();/** 私有常量 MSG_NONE    的注释(同类型的常量可以分块并紧凑定义) */private static final int MSG_NONE    = 0; // 注意初始化值 0, 1, 2 的对齐/** 私有常量 MSG_SUCCESS 的注释 */private static final int MSG_SUCCESS = 1; // 运算符(+ - * / = | & 等)两端必须有空格/** 私有常量 MSG_FAILED  的注释 */private static final int MSG_FAILED  = 2;/** 保护常量的注释 */protected static final String PRO_VAR = "protected";/** 公有常量的注释 */public static final String PUB_VAR = "public";/** 私有成员变量 m_object0 的注释(同类型的成员变量可以分块并紧凑定义) */private Object m_object0 = null;/** 私有成员变量 m_object1 的注释 */private Object m_object1 = null;/** 私有成员变量 m_object2 的注释 */private Object m_object2 = null;/** 保护成员变量的注释 */protected Object m_object3 = null;/** * 对于注释多于一行的, 采用这种方式<p> * 定义该变量 */protected Object m_object4 = null;    /**     * get 方法描述...     * @return     */public Object getObject0(){return m_object0;}    /**     * set 方法描述...     * <p>     * 1. 如果是 get 或 set 函数, 函数体可以只有一行, 且可以不用写参数说明和返回值说明<p>     * 2. 如果变量为 boolean(布尔) 型, 则 get 函数一般写为 is 前缀, 如 m_bHex 变量的函数写为 isHex()<p>     * 3. 除了数组初始化之外, 其余用到花括号"{}"的, 必须另起一行<p>     * 4. 比如不能使用类似 if (bClose) { 这样的代码行, 必须把 { 另起一行     * @param obj     */public void setObject0(Object obj){m_object0 = obj;}/** * 构造方法 */public CodingRuler(){// ...}/** * if 条件表达式原则<p> * 1. 通常 if 语句必须用花括号"{}"包括起来, 如果只有一句, 且为简单赋值或返回等, 可以使用不带 {} 的语句<p> * 2. 在含有多种运算符的表达式中, 使用圆括号来避免运算符优先级问题<p> * 3. 当判断条件很多时, 请将其它条件换行 */private void conditionFun(){boolean bCondition1 = true;boolean bCondition2 = false;boolean bCondition3 = false;boolean bCondition4 = false;boolean bCondition5 = false;boolean bCondition6 = false;if (bCondition1){// Implementation...}if (bCondition1){// Implementation...}else{// Implementation...}if (bCondition1){// Implementation...}else if (bCondition2){// Implementation...}else{// Implementation...}// 使用不带 {} 的语句if (bCondition1) bCondition3 = true;// 使用不带 {} 的语句if (!bCondition2) return; // 注意, 非运算符 ! 的两端不需要空格if ((bCondition1 == bCondition2) || (bCondition3 == bCondition4) || (bCondition5 == bCondition6)){}}/** * switch 语句原则<p> * 1. switch 语句中, break 与下一条 case 之间, 空一行<p> * 2. 对于不需要 break 语句的, 请相连使用<p> * 3. 请默认写上 default 语句, 保持完整性<p> * 4. 在每一个 case 语句上写注释 */private void switchFun(){int nMsg = MSG_NONE;switch (nMsg){// 无// 失败case MSG_NONE:case MSG_FAILED:break;// 成功case MSG_SUCCESS:break;default:break;}}/** * 循环表达式原则<p> * 1. 尽量使用 for each 语句代替原始的 for 语句<p> * 2. 循环中必须有终止循环的条件或语句, 避免死循环<p> * 3. 循环要尽可能的短, 把长循环的内容抽取到方法中去<p> * 4. 嵌套层数不应超过 3 层, 要让循环清晰可读 * 5. for 之后的花括号"{}"必须另起一行, while, do-while 等与之类似 */private void circulationFun(){// 除了数组初始化之外, 其余用到花括号"{}"的, 必须另起一行int nArray[] = { 1, 2, 3, 4, 5 };for (int nData : nArray){// Implementation...}int nLength = nArray.length;for (int i = 0; i < nLength; i++){// Implementation...}boolean bCondition = true;while (bCondition){// Implementation...}do{// Implementation...}while (bCondition);}/** * 异常捕获原则<p> * 1. 捕捉异常是为了处理它, 通常在异常 catch 块中输出异常信息<p> * 2. 资源释放的工作, 可以放到 finally 块部分去做, 如关闭 OutputStream 等<p> * 3. 一般在遇到 IO 操作, 控制硬件, 数组操作, 复杂运算等, 推荐在函数中增加异常处理<p> * 4. 如果程序要求高度的稳定性, 即决不允许出现死机, 中断等情况, 则在函数中增加异常处理 */private void exceptionFun(){try{// Implementation...}catch (Exception e){e.printStackTrace();}finally{// ...}}    /** * 私有方法描述... */@Deprecatedprivate void doSomething(){// Implementation...}/** * 保护方法描述... * <p> * 1. 参数间隔的逗号","之后必须有空格(Objective-C 语言为冒号":")<p> * 2. 在 Eclipse 中, 注释函数时, 在函数行之前输入"/**"后, 回车, 即可自动生成注释样式<p> * 3. 函数的注释, 不分编程语言(C, C++, Java, Objective-C 等), 均采用 Javadoc 格式<p> * 4. @param 为参数说明<p> * 5. @return 为返回值说明 * @param nParam1 参数 1 描述... * @param fParam2 参数 2 描述... * @return 返回值说明 */protected boolean doSomething(final int nParam1, final float fParam2){// Implementation...return true;}/** * 公有方法描述... * <p> * 1. 对于不许在函数内部改变的参数, 则必须使用 final 描述(C 语言 const), 如 bParam1 和 dParam2<p> * 2. 对于可能在函数内部改变的参数, 则不能使用 final 描述, 如 strParamX * @param bParam1   参数 1 描述... * @param dParam2   参数 2 描述... * @param strParamX 参数 X 描述... (注意: 请将参数, 描述都对齐) * @return 返回值说明 */public String doSomething(final boolean bParam1, final double dParam2, String strParamX){strParamX = "My values ​​changed!";// Implementation...return strParamX;}/** * 内部类... */private class CodingRulerInternal{// ...}}


0 0