Java編程規(guī)范(二)

在上一篇的java編程規(guī)范(一)中我們講述了在Java編碼中的一般原則腥沽,雖然這些原則并不涉及具體的代碼規(guī)范,但是這些原則卻是我們?cè)贘ava開發(fā)過程中所應(yīng)該遵循的規(guī)范與思想漾狼。今天我們將學(xué)習(xí)一些涉及具體代碼書寫的格式規(guī)范重慢。

二、格式規(guī)范

(一)縮進(jìn)嵌套的代碼

為了增強(qiáng)代碼的可讀性逊躁,我們常常把一些單獨(dú)的語句組織成語句塊似踱,并對(duì)各塊統(tǒng)一縮進(jìn)使之與周圍代碼分開。

1、如果我們使用開發(fā)環(huán)境核芽,則我們可以使用開發(fā)環(huán)境提供的縮進(jìn)樣式囚戚。但是如果我們是手寫代碼,應(yīng)該使用兩個(gè)空格縮進(jìn)轧简。

class MyFuction {
··void function(int arg) {
····if (arg < 0) {
······for (int i = 0; i <= arg; i++) {
········//  ...
······}
····}
··}
}

2驰坊、塊語句起始端的大括號(hào)應(yīng)該放在引入塊語句那一行的最后,結(jié)束端的大括號(hào)要獨(dú)占一行哮独,并且與引入嵌套語句那一行的第一個(gè)字母對(duì)齊拳芙。我們?nèi)粘J褂玫拇a規(guī)范如下:
類定義:

public class MyClass {
  ...
}

內(nèi)部類定義:


public class OuterClass {
  ···
  class InnerClass {
    ...
  }
}

方法定義:

void method(int j) {
  ···
}

for循環(huán)語句:

for (int i = 0; i <= j; i++) {
  ···
}

if-else語句:

if (j < 0) {
  ···
}
else if ( j > 0) {
  ···
}
else {
  ···
}

try,catch,finally塊:

try {
  ···
}
catch {
  ···
}
finally {
  ···
}

switch語句:

switch (value) {
  case 0:
    ···
    break;
  default:
    ···
    break;
}

while語句:

while (a < b) {
  ···
}

do-while語句:

do {
  ···
} while (a < b);

為了提高一個(gè)團(tuán)隊(duì)的工作效率,不要讓每個(gè)組員任意選擇各自代碼里的縮進(jìn)量及樣式皮璧,應(yīng)該制定統(tǒng)一的一套標(biāo)準(zhǔn)的縮進(jìn)規(guī)則舟扎,并且確保團(tuán)隊(duì)里的每個(gè)人都遵循這個(gè)標(biāo)準(zhǔn)。

(二)斷開長(zhǎng)句

盡管在窗口化的現(xiàn)代編輯器中悴务,可以利用橫向滾動(dòng)條來閱讀很長(zhǎng)的單行代碼浆竭。但是打印機(jī)對(duì)于超過它最大打印寬度的語句,就會(huì)把它們截?cái)嗖沂佟Q行或者打印在不同的頁(yè)上邦泄。因此,要把每行代碼的長(zhǎng)度限制在打印環(huán)境所支持的最大寬度之內(nèi)裂垦,這個(gè)值一般是80或者132個(gè)字符顺囊。

1、不要把多個(gè)語句放在同一行里以免超過最大可接受寬度蕉拢。應(yīng)該一條語句放置在一行里特碳。

//  這樣寫太長(zhǎng)
double x = Math.random(); double y = Math.random();

//  應(yīng)該一句占一行
double x = Math.random();
double y = Math.random();

2、如果一行代碼中包含了復(fù)雜的表達(dá)式晕换,就應(yīng)該把它拆分為幾個(gè)短小的子表達(dá)式午乓,每個(gè)子表達(dá)式的運(yùn)算結(jié)果存儲(chǔ)在一個(gè)臨時(shí)變量里,并且單獨(dú)放置在一行闸准。

//  這樣的表達(dá)式太長(zhǎng)
double length = Math.sqrt(Math.pow(Math.random(),2.0),Math.pow(Math.random(),2.0));

//  應(yīng)該按下面這樣拆分
double x = Math.pow(Math.random(),2.0);
double y = Math.pow(Math.random(),2.0);
double length = Math.sqrt(x + y);

(三) 使用空白

空白就是頁(yè)面上沒有可見字符的區(qū)域益愈。代碼里如果空白太少就會(huì)不易閱讀和理解,所以應(yīng)該使用足夠多的空白把方法夷家、注釋蒸其、代碼塊和表達(dá)式展示清楚。

1库快、以下情況使用單空白來分隔:
(1)摸袁、右括號(hào)")"或者緊隨其后的關(guān)鍵字;關(guān)鍵字和緊隨其后的左括號(hào)"("或者"{"义屏;右括號(hào)")"和緊隨其后的左括號(hào)"{";其實(shí)細(xì)心的讀者會(huì)發(fā)現(xiàn)在上述內(nèi)容的介紹中已經(jīng)應(yīng)用了這些規(guī)范靠汁,在此就不贅述了蜂大。

if (j < 0) {
  ···
}
else if ( j > 0) {
  ···
}
else {
  ···
}

(2)、除了"."之外的運(yùn)算符與其前后的表達(dá)式之間蝶怔。

double length = Math.sqrt(x * x + y * y);
double x = length > 0.0 ? (x / length) : x;

2县爬、以下情況應(yīng)該使用空行來分隔:
(1) 每個(gè)邏輯上獨(dú)立的方法實(shí)現(xiàn)之間

void handleInfo(Message message) {

  DataInput content = message.getDataInput();
  int messageType = content.readInt();
  
  switch (messageType) {
    
    case warning:
      ...
      break;
      
    case error:
      ...
      break;
      
      default:
        ...
        break;
  }
}

(2) 定義類或者接口時(shí),每個(gè)成員之間使用空行

public class Car {
  
  class InnerCar {
    ...
  }
  
   private Bar bar;
   
   Foo(Bar bar) {
     this.bar = bar;
   }
}

(3) 源文件中添谊,每個(gè)類和接口的定義之間要使用空行

interface Paly {
  ...
}
  
public class Person implements Play{
  ...
}

(四)不要直接使用Tab控制符

不同的環(huán)境對(duì)Tab控制符的解釋也是不同的财喳,代碼的格式在原來的編輯環(huán)境下可能正確無誤,但是如果放到另一個(gè)對(duì)Tab控制符有不同解釋的系統(tǒng)中斩狱,可能格式混亂耳高、無法閱讀。

為了避免出現(xiàn)以上的情況所踊,我們應(yīng)該使用空格來縮進(jìn)代碼泌枪。在一個(gè)團(tuán)隊(duì)中,應(yīng)該設(shè)置團(tuán)隊(duì)通用的縮進(jìn)標(biāo)準(zhǔn)秕岛,并且團(tuán)隊(duì)里的所有人都嚴(yán)格遵守這個(gè)標(biāo)準(zhǔn)碌燕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市继薛,隨后出現(xiàn)的幾起案子修壕,更是在濱河造成了極大的恐慌,老刑警劉巖遏考,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慈鸠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡灌具,警方通過查閱死者的電腦和手機(jī)青团,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咖楣,“玉大人督笆,你說我怎么就攤上這事∮栈撸” “怎么了娃肿?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)瘪松。 經(jīng)常有香客問我咸作,道長(zhǎng),這世上最難降的妖魔是什么宵睦? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮墅诡,結(jié)果婚禮上壳嚎,老公的妹妹穿的比我還像新娘桐智。我一直安慰自己,他們只是感情好烟馅,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布说庭。 她就那樣靜靜地躺著,像睡著了一般郑趁。 火紅的嫁衣襯著肌膚如雪刊驴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天寡润,我揣著相機(jī)與錄音捆憎,去河邊找鬼。 笑死梭纹,一個(gè)胖子當(dāng)著我的面吹牛躲惰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播变抽,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼础拨,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了绍载?” 一聲冷哼從身側(cè)響起诡宗,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎击儡,沒想到半個(gè)月后僚焦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡曙痘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年芳悲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片边坤。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡名扛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出茧痒,到底是詐尸還是另有隱情肮韧,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布旺订,位于F島的核電站弄企,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏区拳。R本人自食惡果不足惜拘领,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望樱调。 院中可真熱鬧约素,春花似錦届良、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至送悔,卻和暖如春慢显,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背欠啤。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工荚藻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人跪妥。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓鞋喇,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親眉撵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子侦香,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容