Java Coding Standard
Variables
變數與常數名稱, 格式如下:
字首prefix(optional) + 主體body
字首標明此名稱是什麼物件或是什麼變數型態, 通常是1至3個小寫字母.
主體標明此名稱的意義, 由數個字組成, 每個字的第一個字母大寫, 每個字相連不含空白.
舉例來說, nUserId, n表示此變數為一個整數, 其字首為n. 主體為UserId
字首與對應的型態列表.
Prefix | Type Name | JAVA type |
bl | Boolean. | boolean |
c | Character. | char |
f | Float. | float |
d | Double. | double |
l | Long | long |
s | Short | short |
n | Integer | int |
byt | Byte | byte |
str | String | string |
Class Variables, Method Variables
區域物件變數 (Class Variable): 不需要字首, 主體第一個字完全小寫, 其他每個字的第一個字母大寫. ex userId.
Constants (常數)
不需要字首, 每個字母都大寫,字與字之間用底線(_)相連. ex: MIN_COUNT.
Class/Interface
Class名稱原則上由數個字組成, 每個字的第一個字母大寫, 每個字相連不含空白. ex, UtilFunc
如同變數命名方式,不需要字首,第一個字完全小寫. 最好第一個字是動詞以表示動作.
ex, reverseString(), getInfo()等等.
Package
com.domain.identifier.subidentifier…
¨ 如果為了確認套件的唯一性(unique),須在套件名稱前加上公司的網域名字(com.domain),再加上identifier,identifier建議為模組名稱或子模組名稱。
¨ 所有的套件名稱必需是由小寫的單數名詞所組成的。如com.abc.personal.util等等
Exception
Module exception name
¨ 為了簡化每個模組(Module)對exception的處理,每個模組最好都有屬於自已特定的exception。
¨ 命名時前面為模組名稱(Module name),為增加可讀性建議再加上Exception種類, ex: ModuleNameConnectionTimeoutException
Comments
標題註解
說明此檔案之用途或內部所包含的函數或副程式, 應包括下述幾個基本要件: 版權及保密等級,檔案內容或功能的文字描述,修改記錄.
* Copyright(c) 2012 ComponyName. All Rights Reserved.
*
* Description :
* Written by :
* Date :
* Change Log -
* Date version author description
* ==============================================================
* 20120619 1.00 Mark ...
* 20130415 1.00 Jeff ...
*/
區塊註解
區塊註解使用於解釋 檔案, methods, 資料結構 和 演算法. 在每一個檔案 或method的內部加上區塊註解.
Example:
* Here is a block comment.
*/
單行註解
單行註解置於statement的上方或statement的右方. 用於描述一個statement. 使用/*…*/ 或 // 區隔.
Example:
{
/* Handle the condition. */
return TRUE;
}
else
{
return FALSE; // other cases
}
Class and Interface comments
Class 或 Interface 的宣告之前, 必須加入 Documentation comment. 解釋Class, Interface的用途, 作者, 版本等.
*
* Class comment
*/
public class Point
{
...
}
Method and Member comments
Method或Member的宣告之前, 必須加入 Documentation comment. 解釋Method, Member的用途, 每一個參數的意義, 傳回值的意義, Exception等.
* Put description here
@param filePath a string of file path
@param fileName a string of file name
@return a boolean means success or fail
@throws IOException if open file error
*/
l 程式對齊: 每次內縮4個字元或一個Tab(Tab鍵設定為4個字母,請僅量使用 Tab).
l 避免複雜: 為了便於程式的可讀性與偵錯, 一個原始程式行上不要有多於一個以上的程式指令. 如果需要30秒以上才能瞭解一行敘述, 試著簡化之.
l 函數或程序呼叫:
折行後的參數必須和前一行的第一個參數對齊.
classMethod (parameter1, parameter2, parameter3,
parameter4, parameter5, parameter6);
Visibility Modifiers
class、method、variable的可見度。
Situation |
Public |
Default |
Protected |
Private protected |
private |
Accessible to non-subclass from same packag |
yes |
yes |
yes |
no |
no |
Accessible to subclass from same package |
yes |
yes |
yes |
no |
no |
Accessible to non-subclass from different package |
yes |
no |
no |
no |
no |
Accessible to subclass from different package |
yes |
no |
no |
no |
no |
Inherited by subclass in same package |
yes |
yes |
yes |
yes |
no |
Inherited by subclass in different package |
yes |
no |
yes |
yes |
no |