北京諾必達科技有限公司致遠OA北京技術服務商,OA系統JAVA編碼規范分享
Java編碼規范
-
命名規范
- Package命名 [NAMING.PKG-2]
- Class命名 [NAMING.NCL-2]
- Interface命名 [NAMING.NITF-2]
- Exception Class命名 [NAMING.NE-2]
- Unit Test Class命名 [NAMING.NE-2]
- Enum type命名 [NAMING.NENUM-2]
- Methods命名 [NAMING.NMP-2]
- Local variables命名 [NAMING.NLV-2]
- 常量命名 [NAMING.USF-2]
- . 類名禁止使用java內置類名 [NAMING.DJLO-2]
- . 標示符禁止使用java關鍵字 [NAMING.DJLO-2]
- . 禁止使用sun預留包名 [NAMING.RPKG-2]
- . 禁止僅通過大小寫區分變量 [NAMING.UUVN-4]
- 注釋規范
- 格式規范
1.1. 命名規范
1.1.1. Package命名 [NAMING.PKG-2]
Package命名 [NAMING.PKG-2]
描述:
Package名必須為小寫字母或數字,且必須以字母開頭;
平臺產品中要求包名為com.seeyon.ctp.xxx或com.seeyon.apps.xxx
xxx為應用名如collaboration、edoc ...
示例:
// CTP平臺表單模塊 package com.seeyon.ctp.form; // 會議應用 package com.seeyon.apps.meeting;
1.1.2. Class命名 [NAMING.NCL-2]
描述:
Class名首字母必須大寫,如果是某個Interface的實現,要求命名采用Interface
+Impl
示例:
public interface CollaborationManager{}; public class CollaborationManagerImpl implements CollaborationManager{ }
1.1.3. Interface命名 [NAMING.NITF-2]
描述:
Interface命名首字母必須大寫
示例:
public interface CollaborationManager{ }
1.1.4. Exception Class命名 [NAMING.NE-2]
描述:
Exception class命名必須以Exception結尾
示例:
public class NEFormatException extends Exception{ }
1.1.5. Unit Test Class命名 [NAMING.NE-2]
描述:
Unit test class命名必須以Test結尾
示例:
public class FooTest extends TestCase{ }
1.1.6. Enum type命名 [NAMING.NENUM-2]
描述:
Enum type命名首字母必須大寫
示例:
private enum Grade { A, B, C, D, F };
1.1.7. Methods命名 [NAMING.NMP-2]
描述:
Method命名首字母必須小寫
示例:
public class NMFixed { void method () { // FIXED } }
1.1.8. Local variables命名 [NAMING.NLV-2]
描述:
Local variable命名首字母必須小寫
示例:
private int example = 0;
1.1.9. 常量命名 [NAMING.USF-2]
描述:
所有用 ”final”、”static” 修飾的變量命名要求全大寫
示例:
public static final int SIZE = 10; private static final Logger LOGGER;
1.1.10. . 類名禁止使用java內置類名 [NAMING.DJLO-2]
描述:
類名禁止使用java內置類名
錯誤示例:
public class Integer{ }
1.1.11. . 標示符禁止使用java關鍵字 [NAMING.DJLO-2]
描述:
標示符禁止使用java關鍵字
錯誤示例:
private String enum; private int assert;
1.1.12. . 禁止使用sun預留包名 [NAMING.RPKG-2]
描述:
禁止使用sun預留包名
錯誤示例:
package java.rules.naming;
1.1.13. . 禁止僅通過大小寫區分變量 [NAMING.UUVN-4]
描述:
禁止僅通過大小寫區分變量
錯誤示例:
int foo = 9; int Foo = 9;
1.2. 注釋規范
1.2.1. java文件頭注釋 [FORMAT.MCH-2]
描述:
所有java文件需要在文件頭添加如下注釋段:
/** * $Author$ * $Rev$ * $Date:: $: * * Copyright (C) 2012 Seeyon, Inc. All rights reserved. * * This software is the proprietary information of Seeyon, Inc. * Use is subject to license terms. */ package xx.xx.xx; import xx.xx;
1.2.2. java類注釋 [JAVADOC.PJDC-2]
描述:
所有java類需按以下格式添加類注釋:
/** * <p>Title: 應用模塊名稱</p> * <p>Description: 代碼描述</p> * <p>Copyright: Copyright (c) 2012</p> * <p>Company: seeyon.com</p> */ public final class MyClass
1.2.3. 方法注釋 [JAVADOC.PJDM-2]
描述:
所有方法需按以下格式添加方法注釋,繼承的方法可以使用’@see’、’ @inheritDoc’ tag:
/** * Executes a mapped SQL SELECT statement that returns data to populate * a number of result objects within a certain range. * * @param id The name of the statement to execute. * @param skip The number of results to ignore. * @param max The maximum number of results to return. * @return A List of result objects. * @throws java.sql.SQLException If an error occurs. */ List queryForList(String id, int skip, int max) throws SQLException;
相關校驗點:
[JAVADOC.DPMT-2] 避免無用的javadoc tag
[JAVADOC.MDJT-2] 注釋內容要有意義
[JAVADOC.PARAM-2] 每個param都要有'@param' tag
[JAVADOC.MRDC-2] 有返回值的方法必須使用'@return' tag
[JAVADOC.THROW-2] 有異常拋出的方法必須使用'@throws' 或 '@exception' tag
[JAVADOC.VMCR-2] 無返回值的方法不要有'@return' tag
[JAVADOC.BT-4] 不允許使用javadoc中未定義的'@' tag
1.3. 格式規范
1.3.1. 代碼長度限制 [FORMAT.LL-2]
描述:
每行代碼長度不能超過120個字符
1.3.2. 每個聲明占用一個代碼行 [FORMAT.OSPL-2]
描述:
每個聲明占用一行代碼
錯誤示例:
int i = a + b; return i;
正確示例:
int i = a + b; return i;
1.3.3. 使用括號分隔復雜表達式 [FORMAT.APAREN-3]
描述:
使用括號分隔復雜表達式提高代碼可讀性
錯誤示例:
if (i >= j && i >= 0)
正確示例:
if ((i >= j) && (i >= 0))
1.3.4. 避免過于復雜的判斷表達式
if ( workTimeSpecials.size() > 0 && !workTimeSpecials.get(0).getIsRest().equals("0")) || workTimeSpecials.size() == 0 && !isWorkDay) { return; }
遇到這樣的表達式,請使用Extract Local Variable提取為意義明確的變量。
1.3.5. 代碼縮進使用空格代替tab [FORMAT.DUT-3]
描述:
代碼縮進使用空格代替tab保證代碼在非windows系統環境下的可讀性
1.3.6. 數組聲明格式 [FORMAT.IAD-3]
描述:
數組聲明[]放在type后面而不是變量后面
錯誤示例:
private String str1[], str2[], str3[];
正確示例:
private String [] str1, str2, str3;
1.3.7. 正確使用equals
錯誤示例:
str.equals("0");
正確示例:
"0".equals(str); // 規避str為null時的空指針異常
1.3.8. 避免不必要的小括號 [FORMAT.UP-3]
描述:
避免不必要的小括號
錯誤示例:
i = (i + 2);
1.3.9. 與文件同名的類應放在所有類聲明的最前面 [FORMAT.FCN-4]
描述:
如果一個文件中定義了多個類,那么與文件同名的類作為主類應放在代碼的最前面
1.3.10. 聲明中修飾符的使用應遵循正確順序 [FORMAT.MO-4]
描述:
聲明中修飾符的使用應遵循以下順序:
annotations
public/protected/private
abstract
static
final
transient
volatile
synchronized
native
strictfp