摘 要:文章探討了軟件開發(fā)的編程規(guī)范,研究如何建立編程規(guī)范,從而增強(qiáng)編程人員的合作,提高項(xiàng)目開發(fā)的效率等。
關(guān)鍵詞:軟件開發(fā);編程;規(guī)范
隨著信息技術(shù)的發(fā)展,軟件的開發(fā)越來越多,如何規(guī)范并有效地編程是軟件開發(fā)過程中的重要內(nèi)容,按照編碼規(guī)范書,統(tǒng)一編程人員的編程風(fēng)格,能夠提高項(xiàng)目中編程人員的溝通與合作,提高整個(gè)團(tuán)隊(duì)的開發(fā)效率,提高整個(gè)項(xiàng)目的可讀性、可維護(hù)性、可修改性、可靠性及一致性。通過編寫編碼規(guī)范書,為項(xiàng)目確立一個(gè)統(tǒng)一的編碼風(fēng)格,約束每一位開發(fā)人員的編碼寫法,統(tǒng)一編碼寫法,提高編程的質(zhì)量,提高編程的可閱讀性,盡力杜絕因編碼風(fēng)格引起的安全性問題及閱讀理解代碼困難等隱患。
1 縮進(jìn)、間隔、對(duì)齊
每一行代碼不能超過80個(gè)字符(包括之前縮進(jìn)的TAB),如果超過80個(gè)字符的話要進(jìn)行折行處理,同時(shí)如果折行的話,要注意如何斷行,盡力在代碼長度接近80字符的位置斷行,同時(shí)盡力在操作符優(yōu)先級(jí)低的部分進(jìn)行斷行且同時(shí)折行部分做相應(yīng)的縮進(jìn),這樣能夠增加代碼的可讀性。盡力避免出現(xiàn)很大的類、很大的方法和很大的功能模塊。如果出現(xiàn)較大的類,則應(yīng)把相應(yīng)功能代碼重構(gòu)到其他類中,通過組合燈進(jìn)行調(diào)用。如果出現(xiàn)較大的方法、功能模塊的話,則應(yīng)用子方法等進(jìn)行抽取,這樣也有利于理解和代碼的復(fù)用的優(yōu)點(diǎn),代碼應(yīng)該以清楚明了的邏輯實(shí)現(xiàn)復(fù)雜的功能。
每一個(gè)子模塊都在父模塊縮進(jìn)一個(gè)TAB(一個(gè)TAB四個(gè)空格),能夠很好地體現(xiàn)邏輯層次,提高代碼的可讀性。循環(huán)、條件等內(nèi)部代碼應(yīng)縮進(jìn)一個(gè)TAB。相同層次的代碼對(duì)齊。左大括號(hào)“{”應(yīng)該緊隨相關(guān)語句之后,而相呼應(yīng)的右大括號(hào)“}”則單獨(dú)作為一行出現(xiàn),且縮進(jìn)與相對(duì)應(yīng)的左大括號(hào)“{”的縮進(jìn)相同。if-else語句或者for、while等循環(huán)語句必須用左大括號(hào)“{”和右大括號(hào)“}”把要執(zhí)行的內(nèi)容包含在一起,不論內(nèi)部的執(zhí)行是一行代碼還是多行代碼,不要用縮進(jìn)的形式代替左大括號(hào)“{”和右大括號(hào)“}”的功能,這樣容易理解閱讀,且不易出錯(cuò)。
類、方法、重要的功能模塊、較大的功能模塊之間應(yīng)該添加空行,同時(shí)在操作符的左右兩端添加空格,進(jìn)行連續(xù)賦值時(shí)每一行的相應(yīng)操作符應(yīng)對(duì)齊,相同類型的變量定義緊挨著,關(guān)系緊密的行應(yīng)該緊挨著,并把相應(yīng)的操作符、類型、參數(shù)等對(duì)齊,以增加其可讀性。
2 命名規(guī)則
2.1 包、類、方法的命名規(guī)范
包、類、方法的命名為英文字符和數(shù)字,且首字符必須是英文字符,命名能夠準(zhǔn)確反映相應(yīng)的包、類、方法的意義,采用相關(guān)領(lǐng)域的專業(yè)術(shù)語,不要用Unicode的命名,不要用漢語拼音等形式命名。包名的字母為小寫,且包名要有相應(yīng)的意義,例如:com.beijing.bean。類名的首字母為大寫,其他字母為小寫,大小寫結(jié)合,提高可讀性,每一個(gè)單詞的第一個(gè)字母大寫,其它的為小寫,單詞能夠反應(yīng)該類、接口的含義和功能等,一般采用名詞。所有的接口名字之前加上I前綴。抽象類的名字之前Abstract前綴。例如:UserAction.java。類的實(shí)例則為小寫表示,比如User類的實(shí)例命名為user.java。
2.2 方法的命名
方法命名采用完整英語單詞,首字母小寫,其他單詞的第一個(gè)字母大寫,其他字母小寫,同時(shí)方法的名稱的第一個(gè)單詞往往是一些動(dòng)詞,代表完成的操作等,例如:getDBConnection()。
2.3 變量和參數(shù)的命名
首字母小寫,其它單詞的第一個(gè)字母大寫,其他部分為小寫,例如: firstName、listAllCustomers、Manager。對(duì)于常量要采用完整的英文大寫單詞,且能正確反映相應(yīng)的實(shí)際意義,比如static String MAN =“男”。
2.4 組件和部件的命名
組件和部件的命名則應(yīng)該按照匈牙利命名的法則。匈牙利規(guī)則的基本原則非常簡單,名字由兩部分構(gòu)成:類型(Type)和限定詞(Qualifier)[1]。即命名的原則:變量名=屬性+類型+對(duì)象描述,其中每一對(duì)象的名稱都要求有明確含義,可以取對(duì)象名字全稱或名字的一部分。例如:btnLogin,txtName。
3 注釋
代碼的書寫,要添加詳細(xì)的注釋,提高代碼在程序員間的理解和溝通。如果程序不被注釋的話,則該代碼毫無價(jià)值可言。好的注釋能增加代碼的清晰度,提高開發(fā)的效率。注釋要遵照簡潔、清楚易于理解的原則,避免拖沓冗長的描寫。注釋要給出功能性的說明,給出初始說明以及結(jié)果的描述,還應(yīng)給出相應(yīng)的原因等,不應(yīng)為了注釋而注釋。變量、簡短語句的注釋在所在行的行尾添加,其他注釋在代碼語句之前添加注釋。每一個(gè)文件、包的頭部要注明相關(guān)的信息,比如該文件的名稱、版本、版權(quán)、創(chuàng)建和修改等相關(guān)信息,相關(guān)信息用/**/注釋。在方法前添加/**/注釋,注明相關(guān)的信息,名稱、方法功能說明、參數(shù)說明、返回值說明等信息。應(yīng)對(duì)重要的變量添加注釋,說明其含義等等。復(fù)雜的分支、表達(dá)式、不易理解的循環(huán)等添加相應(yīng)的注釋,概況其實(shí)現(xiàn)的功能內(nèi)容等。
一個(gè)類的例子(簡略):
package dao;
import java.util.List;
import org.hibernate.Session;
/*
* 操作數(shù)據(jù)庫用的基礎(chǔ)類
* @作者 張三
* @創(chuàng)建時(shí)間 2015-05-12
* @修改作者 張三
* @修改時(shí)間 2015-05-12
*/
public class BaseDao {
/*
* 獲得總頁數(shù)。
* @param hql查詢用的hql語句
* @param pageSize每一頁的最大顯示數(shù)據(jù)條數(shù)
* @return totaPage 總頁數(shù)
* @throws Exception
*/
public int getCountPage(String hql, int pageSize) throws Exception {
// 操作數(shù)據(jù)庫用的Session對(duì)象
Session session = 1;
// 總頁數(shù)
int totaPage = 0;
try {
// 總頁數(shù)
totaPage=(count % pageSize ==0) ? (count / pageSize) : (count
/ pageSize + 1);
} catch (Exception ex) {
// 拋出異常
throw new DBException(“操作數(shù)據(jù)庫出錯(cuò)!”);
}
return totaPage;
}
}
編碼規(guī)范在軟件項(xiàng)目開發(fā)中占據(jù)重要位置,項(xiàng)目開發(fā)不是一個(gè)人的項(xiàng)目,軟件項(xiàng)目是一個(gè)團(tuán)隊(duì)開發(fā)的項(xiàng)目,合理有效的編碼規(guī)范有利于團(tuán)隊(duì)成員間的溝通與合作,如何編寫合理有效的編程規(guī)范是每一個(gè)項(xiàng)目開發(fā)中研究和確定的。
參考文獻(xiàn)
[1]陳藍(lán).軟件世界[J].軟件世界,1995(2):59.