第2部分 資料庫SQL語言
資料庫指令碼的注釋
1. 概述
注釋在程式語言的編寫中佔有非常重要的地位。優美的、得當的注釋不僅有助於研發人員理解程式,還能夠提高編程效率(進而提高辦事效率)。
但是,可能是由於工作比較忙的緣故,許多開發人員不重視注釋的書寫,這也導致了項目交接的時候,其他開發人員理解程式困難,甚至不知道程式到底要做什麼事情。因此,良好注釋的書寫是對一個開發人員的基本要求,大家一定要重視。
對於指令碼的注釋,建議大家一律採用英文,這樣可以體現出國際化、專業性與規範性。
2. 資料庫指令碼檔案頭部的注釋
很多指令檔都沒有頭部的注釋,大家認為它不重要。但作者認為一定要把這部分內容加上,這樣為以後追蹤版本資訊提供了方便。
在檔案頭部的注釋中,要包括著作權、資料庫類型、建立日期、作者、修改記錄等資訊,可以採用以下的樣式:
--*********************************************************************
-- copy right (C)2014, company name.
-- DB Type: XXX
-- Content: XXX
-- Created: YYYY.MM.DD
-- Modify1: The name of the author
-- Date1: YYYY.MM.DD
-- version1: The original version of the product
-- Modify2: The name of who modified the file
-- Date2: YYYY.MM.DD
-- version2: The updated version of the product
--**********************************************************************
3. 資料庫指令碼檔案摘要資訊的注釋
在頭部注釋之後,不要馬上就開始建立表及預存程序,而應該有一個摘要。如果是建表指令碼,摘要就是該檔案中包括的表的名稱和用途;如果是建立預存程序的指令碼,摘要就是該檔案中包括的預存程序的名稱和用途。這個摘要可以起到索引的作用,協助開發人員瞭解指令檔的主要內容。
摘要資訊的注釋可以採用以下的樣式:
--********* XXX(Version)DataBase Table Creating*********
--* 1 table1 : description1
--* 2 table2 : description2
--* 3 table3 : description3
. . . . . .
--***************************************************
4. 表或預存程序開頭處的注釋
在表或預存程序的開頭處添加註釋,可以起到方便定位、易於查閱的作用。可以採用以下的樣式:
-- XXX(The name of the table or procedure, and what it is used for)
The definition of the table or procedure
5. 表的各欄位之後的注釋
在定義了一個表的各欄位之後,需要對每個欄位進行注釋,以方便研發人員瞭解其作用,避免猜測和錯誤理解。這樣,使用起來也會得心應手。
表的定義及欄位注釋可以採用以下的樣式:
create table tb_XXX
(
AAA int not null, -- description1
BBB varchar(256) not null, -- description2
CCC int default(0) null, -- description3
DDD varchar(256) default('''') null, -- description4
. . . . . .
)
6. 預存程序的注釋
一般說來,預存程序包括的SQL語句比較多,因此注釋也會比較的複雜。即便是這樣,在一些關鍵語句的地方,一定要有注釋,否則其他開發人員閱讀起來就會比較費勁。
預存程序的編寫及注釋可以採用以下的樣式(以Sybase資料庫中的文法為例):
create procedure pr_XXX
@AAA varchar(30), -- description1
@BBB int, -- description2
. . . . . .
as
begin
declare
@CCC int, -- description3
@DDD varchar(100), -- description4
. . . . . .
. . . . . .
-- YYY(name) add YYYYMMDD for ZZZ begin
. . . . . .
-- YYY(name) add YYYYMMDD for ZZZ end
. . . . . .
statement1 -- YYY add YYYYMMDD description5
. . . . . .
statement2 -- YYY modify YYYYMMDD description6
. . . . . .
statement3 -- YYY delete YYYYMMDD description7
. . . . . .
. . . . . .
statement4 -- description8(important statement)
. . . . . .
end
7. 有關注釋的一些規則和建議
(1) 統一使用“--”進行注釋(不要使用“/* */進行注釋”)。
(2) 指令檔頭部必須進行注釋。
(3) 每段完成一定功能的指令碼前(如建立資料表、預存程序、任務、插入預設記錄等),均應有注釋說明。
(4) 建立資料表中每個欄位後應有注釋,說明欄位含義,有些還需要說明取值範圍等。
(5) 建立預存程序和函數中每個輸入輸出參數後應有注釋,說明參數含義,有些還需要說明取值範圍等。
(6) 對分支語句(包括條件分支)、迴圈語句等要編寫注釋。
(7) 保證代碼和注釋的一致性。修改代碼同時修改相應的注釋,不再有用的注釋要刪除。
(8) 注釋應與其描述的代碼相近,對代碼的注釋應放在其上方或右方(對資料表中欄位和預存程序參數的注釋)相鄰位置,不可放在下面,如放於上方則需與其上面的代碼用空行隔開。
(9) 注釋與所描述代碼進行同樣的縮排。
(10) 中文版本的注釋統一使用中文描述,海外版本的注釋統一使用英文描述。
(11) 通過對函數或過程、變數等正確的命名以及合理地組織代碼結構,使代碼成為自注釋的。
(12) 盡量避免在注釋中使用縮寫,特別是不常用縮寫。
8. 總結
注釋的作用是錦上添花,不恰當的注釋不但不能夠起到應有的作用,反而有可能讓人產生誤解。因此,我們在添加指令檔注釋的時候,一定要遵循簡單、清晰、明了、通俗易懂的原則。
(本系列文章每周更新兩篇,敬請期待!本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,號:245924426,歡迎關注!)