java標準規範,使程式大眾化
Java code standard
1. 介紹/說明
1.1 宣告
本文件內容描述寰信通JAVA編碼規範,凡是在寰信通開發的JAVA程式必須按照此文件規定.
1.2 為什麼要有編碼規範
編碼規範對於開發人員來說是非常重要的,有以下幾個原因:
一個軟體的生命週期中,80%的花費在於維護
幾乎沒有任何一個軟體,在其整個生命週期中,均由最初的開發人員來維護
編碼規範可以改善軟體的可讀性,可以讓程式設計師儘快而徹底地理解新的程式碼
如果你將原始碼作為產品釋出,就需要確任它是否被很好的打包並且清晰無誤,一如你已構建的其它任何產品
2. 目標
為來自不同的專案組或個人提供標準的程式碼格式。
增加易讀性。
3. 命名規定
命名規範使程式更易讀,從而更易於理解。它們也可以提供一些有關識別符號意圖的資訊,有助於開發人員理解程式碼。
3.1 包的命名
包的命名應該都是小寫字母,單詞之間用“.”分開。所有的JAVA檔案必須建立在com.global包下。例如:
package com.global.water.system;
package com.global.cctv.system;
3.2 類的命名
類的命名應該都是名詞,第一個字母都要大寫,其他每個單詞的第一個字母都要大寫。要用完整的單詞,除非是被公認的單詞縮寫。例如:
class Container
class ShippingLine
3.3 介面的命名
介面的命名應該都是名詞或形容詞,第一個字母都要大寫,其他每個單詞第一個字母都要大寫。要用完整的單詞,除非是被公認的單詞縮寫。例如:
interface ContainerOwner
interface Runnable
3.4 方法的命名
方法的命名應該都用動詞或是慣用短語描述,第一個字母都要小寫,其他每個單詞第一個字母都要大寫。例如:
run()
changeLocationTo()
getContainerId()
3.5 變數的命名
所有非靜態變數名的第一個字母都要小寫,其他每個單詞的第一個字母都要大寫。命名應儘量簡單並且要有意義。變數名的選用應該易於記憶,能夠指出其用途。儘量避免單個字元的變數名,除非是一次性的臨時變數。臨時變數通常被取名為i,j,k,m和n,它們一般用於整型;c,d,e,它們一般用於字元型。變數名不應以下劃線或美元符號開頭,儘管這在語法上是允許的。下面是一些正確的變數命名例子:
int numOfContainers
String containerId;
Date today;
3.6常量命名
對於靜態的final變數,在命名的時候每一個單詞都要大寫,單詞之間用“_”分開。例如:
final static MIN_WIDTH = 4;
final static DEFAULT_CONTAINER_SIZE = 20;
3.7檔案的命名
java源程式檔案以.java結尾,編譯後的檔案以.class結尾。例如:
Container.java
Container.class
3.8 推薦的命名
3.8.1 類名推薦
當要區別介面和實現類的時候,可以在類的後面加上“Impl”。例如:
interface Container
class ContainerImpl
class Container3PImpl
class ContainerYICTImpl
3.8.2 Exception類名推薦
Exception類最好能用“Exception”做為類命名的結尾。例如:
DataNotFoundException
InvalidArgumentException
3.8.3 抽象類名推薦
抽象類最好能用“Abstract”做為類命名的開頭。例如:
AbstractBeanDefinition
AbstractBeanFactory
3.8.4 Test類名推薦
Test類最好能用“Test”做為類命名的結尾。例如:
ContainerTest
3.8.5 工廠類方法推薦
工廠方法最好能把該方法做要建立的物件型別描述出來。例如:
public Container createContainer();
public Location newLocation();
4.Java檔案組織
一個檔案由被空行分割而成的段落以及標識每個段落的可選註釋共同組成。超過2000行的程式難以閱讀,所以一個java程式檔案中的程式碼行數不能超過2000行,除非有特殊原因。
每個Java原始檔都包含一個單一的公共類或介面。若私有類和介面與一個公共類相關聯,可以將它們和公共類放入同一個原始檔。公共類必須是這個檔案中的第一個類或介面。
Java原始檔還遵循以下規則,這個規則規定了java程式段落的順序:
- 開頭註釋
- 包和引入語句
- 類和介面宣告
5. JAVA檔案宣告順序
類或介面應該按以下順序宣告:
包的定義
impot類(輸入包的順序、避免使用*)
· 輸入包應該按照java.*.*,javax.*.*,org.*.* ,com.*.*的順序import
· 在import的時候不應該使用* (例如: java.util.*)
類或介面的定義
靜態變數定義,按public,protected,private順序
例項變數定義,按public,protected,private順序
構造方法
方法定義順序按照public方法(類自己的方法),實現介面的方法,過載的public方法,受保護方法,包作用域方法和私有方法。
建議:類中每個方法的程式碼行數不要超過100行。
內部類的定義
6. JAVA檔案格式縮排定義
6.1 縮排尺寸
用4個空格做為縮排尺寸。不建議用TAB代替,因為不同的Text Edit工具對TAB的設定是不同的。
6.2 行的尺寸
每行不要超過80個字元。
6.3 行的格式定義
當一行表示式不能在一行內顯示,請按下列順序要求拆行:
在“(”或“=”符號後拆行,在“,”拆行,在一個操作符後拆行
把併發的拆行放到同一級別上的縮排
如果在拆行中再次拆分的時候遇到“(”,應該新拆出來的行放在更遠的一個縮排級別上
例如:methodWithLongName(
expression1, expression2, expression3,
expression4, expression5);
var = method1(
expression1, expression2,
method2( expression3, expression4));
7. 註釋
Java有兩種註釋方法。“/* This is a comment */”或 “// This is a comment”
第一種應該被用到寫JavaDoc上,並且都用“/**”開頭。
第二種適合於在做部分程式碼的註釋,但只適合做非常短內容的註釋。
8. 宣告
8.1 變數宣告
推薦每行宣告一個變數,並加註釋。例如:
int count; // number of containers
int size; // size of table
int count, size; // AVOID THIS!
陣列宣告應該採用字首方式。例如:
int[] table;
String[] args;
8.2 類或介面宣告
“{”和宣告語句在同一行。
如果不能在同一行顯示,就將“extends”或“implements”進行拆行,並放在兩個縮排級別後。
“}”符號應該獨自佔一行。
例如:
public class Manager extends Employee {
...
}
public class ChiefExecutiveOfficer
extends Manager
implements Person {
}
8.3 方法宣告
“{”和宣告語句在同一行。
“}”符號應該獨自佔一行。
例如:
public int myMethod(int i, int j) {
...
}
9. 語句格式
9.1 return語句
return 後面的value在比較明顯的時候不要用“()”。例如:
return;
return myDisk.size();
return (size ? size : defaultSize);
9.2 if, if-else, if-else-if-else 語句
例如:
if (condition) {
statements;
}
if (condition) {
statements;
}
else {
statements;
}
if (condition) {
statements;
}
else if (condition) {
statements;
}
else if (condition) {
statements;
}
9.3 for 語句
例如:
for (initialization; condition; update) {
statements;
}
9.4 while語句
例如:
while (condition) {
statements;
}
9.5 do-while語句
例如:
do {
statements;
}
while (condition);
9.6 switch語句
例如:
switch (condition) {
case ABC:
statements;
case DEF:
statements;
break;
case XYZ:
statements;
break;
default:
statements;
break;
}
9.7 try-catch語句
例如:
try {
statements;
}
catch (ExceptionClass e) {
statements;
}
finally {
statements;
}
10. JavaDoc的格式定義
10.1 檔案頭
應該包括Copyright,檔案版本等資訊。例如:
/*
* Copyright (C) 2004 北京寰信通科技有限公司.
*
* 本系統是商用軟體,未經授權擅自複製或傳播本程式的部分或全部將是非法的.
*
* $$Id:$$
* Date Author Description
*/
10.2 類說明資訊
定義檔案描述,作者,版本。例如:
/**
* Class description goes here.
*
*
* @author <a href="[email protected]">xxx</a>
* @version CVS $$Revision$$ $$Date$$
*/
10.3 變數定義
定義變數描述。例如:
/**
* Comment for <code>${field}</code>
*/
10.4 方法定義
定義方法的描述,引數,返回值,參照文件,Exception。例如:
/**
* description
*
* @param 方法,變數
* @return
* @exception
* @see //代表參考....
* @since //代表從什麼版本起
*/
相關推薦
java標準規範,使程式大眾化
Java code standard 1. 介紹/說明 1.1 宣告 本文件內容描述寰信通JAVA編碼規範,凡是在寰信通開發的JAVA程式必須按照此文件規定. 1.2 為什麼要有編碼規範 編碼規範對於開發人員來說是非常重要的,有以下幾個原因: 一個軟體的
Java程式設計規範,程式碼驗收標準
引言: 這個標準是衡量程式碼本身的缺陷,也是衡量一個研發人員本身的價值。 軍規一:【避免在程式中使用魔鬼數字,必須用有意義的常量來標識。】 軍規二:【明確方法的功能,一個方法僅完成一個功能。】 軍規三:【方法引數不能超過5個】 軍規四:【方法調用盡量不要返回null
java 遇到未知異常使程式崩潰,輸出jvm的dump崩潰資訊到指定檔案,然後殺死此程序
1.我們首先需要獲取當前java程序的pid。方法為: //檢視當前程序pid private static void getPID(){ RuntimeMXBean runtime = ManagementFactory.ge
【Qt】Qt訊號與槽使用不當,使程式崩潰
問題描述 跨執行緒使用Qt訊號和槽,訊號傳送時間間隔大於槽函式處理時間時,造成程式崩潰。 原因分析 跨執行緒使用Qt訊號和槽時,connect預設是QueuedConnection,佇列連線方式。 訊號傳遞給槽函式的引數,分配記憶體後放入佇列,如果槽
Google 出品的 Java 編碼規範,權威又科學,強烈推薦
document 允許 內部 efault cat 改變 如何 正則表達 per 這份文檔是Google Java編程風格規範的完整定義。當且僅當一個Java源文件符合此文檔中的規則, 我們才認為它符合Google的Java編程風格。 與其它的編程風格指南一樣,這裏所討論的
Google 的 Java 編碼規範,參考學習!
這份文件是 Google Java 程式設計風格規範的完整定義。當且僅當一個 Java 原始檔符合此文件中的規則, 我們才認為它符合 Google 的 Java 程式設計風格。 與其它的程式設計風格指南一樣,這裡所討論的不僅僅是編碼格式美不美觀的問題, 同時也討論一些約定及編碼標準。然而,這份文件主要側重於
linux 部署java程式,使其成為服務
一個小專案,linux環境下部署,記錄一下: 啟動指令碼comm_mq如下: #! /bin/sh #chkconfig:345 61 61 #description:test2Run description #-----------------------------
JAVA生成一個二維數組,使中間元素不與相鄰的9個元素相等,並限制每一個元素的個數
map 個數 nta nds put 可用 dom mov wid JAVA生成一個二維數組,使中間元素不與相鄰的9個元素相等,並限制每一個元素的個數 示例如下 至少需要九個元素:"A","B","C","D","E","F","G","H","I" 我們打印一個30*15
練習 1-3 修改溫度轉換程式,使之能在轉換表的頂部列印一個標題。
C語言程式設計(第二版) 練習1-3 個人設計 練習1-3 修改溫度轉換程式,使之能在轉換表的頂部列印一個標題。 程式碼塊: #include <stdio.h> #include <stdlib.h> int main() { double c,
華為程式設計規範,程式碼驗收標準。
引言: 這個標準是衡量程式碼本身的缺陷,也是衡量一個研發人員本身的價值。 軍規一:【避免在程式中使用魔鬼數字,必須用有意義的常量來標識。】 軍規二:【明確方法的功能,一個方法僅完成一個功能。】 軍規三:【方法引數不能超過5個】 軍規四:【方法調用盡量不要返回null,取而代之以丟
定義一個帶參的巨集,使兩個引數的值互換,並寫出程式,輸入兩個數作為使用巨集時的實參。輸出已交換後的兩個值。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanne
一線網際網路常見的14個Java面試題,你顫抖了嗎程式設計師
跳槽不算頻繁,但參加過不少面試(電話面試、face to face面試),面過大/小公司、網際網路/傳統軟體公司,麵糊過(眼高手低,缺乏實戰經驗,掛掉),也面過人,所幸未因失敗而氣餒,在此過程中不斷查缺補漏,養成了踏實、追本溯源、持續改進的習慣,特此將自己經歷過、構思過的一些面試題記錄下來,如果答案有問題
調查:Java程式設計師最傷心,C++程式設計師最年老
說起我們對程式設計世界現有的刻板印象,你一定聽說過類似於沒有人喜歡用Java編碼或者使用C ++都是老人家,等等這樣的話。為了分析這些刻板印象背後的真相,Trestle Technology的資料工程師寫了一個工具。 不知道你有沒有聽說過微軟的Project Oxford,它的Face API可
linux筆記:安裝程式後,使用時顯示找不到命令(command not found)
在linux中,用各種工具下載安裝程式後,使用時顯示找不到命令(command not found)解決方法 其實這個問題與在windows安裝程式後,在命令列下使用不了是一個原因:沒有配置環境變數 linux解決方法: linux中假如你安裝了一個A程式,在終端輸入 f
一名3年工作經驗的程式設計師應該具備的技能(寫得很好,果斷轉) 因為和同事有約定再加上LZ自己也喜歡做完一件事之後進行總結,因此有了這篇文章。這篇文章大部分內容都是面向整個程式設計師群體的,當然因為LZ本身是做Java開發的,因此有一部分內容也是專門面向咱們Java程式設計師的。
因為和同事有約定再加上LZ自己也喜歡做完一件事之後進行總結,因此有了這篇文章。這篇文章大部分內容都是面向整個程式設計師群體的,當然因為LZ本身是做Java開發的,因此有一部分內容也是專門面向咱們Java程式設計師的。 簡單先說一下,LZ座標杭州,13屆本科畢業,算上年前在阿
如何使程式在eclipse上Run As,在叢集中Run
一、First Step 將配置檔案拿出來包括(core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml) 注意:修改配置檔案!把主機名改成對應的埠號(或者在window下設定hosts配置主機名和ip的對映) 拿出來之後放到你所
遠端連線Linux,如何使程式斷開連線後繼續執行
遠端連線到Linux終端後,如果發生意外或者人為斷開了遠端連線,那麼正在執行的程式或命令(例如備份資料庫這種比較耗時的操作)就會中斷。原因是因為斷開連線後,終端會收到SIGHUP(hang-up 結束通話)訊號從而關閉該會話期的子程序。
2018年11月3日java學習之第一個程式 HelloWord以及註釋 ,API
1.用記事本寫HelloWord. .java -》javac.exe-》.class-》java.exe-》結果 main 方法是程式的入口 //單行註釋;/* */多行註釋 程式碼例項 class HelloWord { public stat
利用正則匹配url是否合法對於有的url會浪費過長時間使程式卡死,切記!
改進:改成匹配url是否為以某個結尾的,至於非法的url就讓Jsoup.connect(url)把異常拋棄 //啟動該正則匹配特別的慢 // public static String regex = "^([hH][tT]{2}[pP]:/*|[hH][tT]{2}[pP][sS]
少走彎路,JAVA入門及學習路線,給程式設計師的建議
今天LZ是打算來點乾貨,因此咱們就不說一些學習方法和技巧了,直接來談每個階段要學習的內容甚至是一些書籍。這一部分的內容,同樣適用於一些希望轉行到Java的同學。 在大家看之前,LZ要先宣告兩點。 1、由於LZ本人是Java後端開發出身,因此所推薦的學習內容是Java Web和Java後端開發的路