ha=(ha*128+*key++)%tabPtr->size;
ha = ( ha * 128 + *key++ ) % tabPtr->size;
有空格和沒有空格的感覺不一樣吧。一般來說,語句中要在各個(gè)操作符間加空格,函數(shù)調(diào)用時(shí),要以各個(gè)參數(shù)間加空格。如下面這種加空格的和不加的:
if ((hProc=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid))==NULL){
}
if ( ( hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid) ) == NULL ){
}
iii) 換行。不要把語句都寫在一行上,這樣很不好。如:
for(i=0;i
這種即無空格,又無換行的程序在寫什么。考由峡崭窈蛽Q行吧!
for ( i=0; i
if ( ( a[i] < '0' a[i] > '9' ) &&
( a[i] < 'a' a[i] > 'z' ) ) {
break;
}
}
好多了吧?有時(shí)候,函數(shù)參數(shù)多的時(shí)候,最好也換行,如:
CreateProcess(
NULL,
cmdbuf,
NULL,
NULL,
bInhH,
dwCrtFlags,
envbuf,
NULL,
&siStartInfo,
&prInfo
);
條件語句也應(yīng)該在必要時(shí)換行:
if ( ch >= '0' ch <= '9'
ch >= 'a' ch <= 'z'
ch >= 'A' ch <= 'Z' )
iv) 空行。不要不加空行,空行可以區(qū)分不同的程序塊,程序塊間,最好加上空行。如:
HANDLE hProcess;
PROCESS_T procInfo;
/* open the process handle */
if((hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid)) == NULL)
{
return LSE_MISC_SYS;
}
memset(&procInfo, 0, sizeof(procInfo));
procInfo.idProc = pid;
procInfo.hdProc = hProcess;
procInfo.misc = MSCAVA_PROC;
return(0);
v) 對(duì)齊。用TAB鍵對(duì)齊你的一些變量的聲明或注釋,一樣會(huì)讓你的程序好看一些。如:
typedef struct _pt_man_t_ {
int numProc; /* Number of processes */
int maxProc; /* Max Number of processes */
int numEvnt; /* Number of events */
int maxEvnt; /* Max Number of events */
HANDLE* pHndEvnt; /* Array of events */
DWORD timeout; /* Time out interval */
HANDLE hPipe; /* Namedpipe */
TCHAR usr[MAXUSR];/* User name of the process */
int numMsg; /* Number of Message */
int Msg[MAXMSG];/* Space for intro process communicate */
} PT_MAN_T;
怎么樣?感覺不錯(cuò)吧。
這里主要講述了如果寫出讓人賞心悅目的代碼,好看的代碼會(huì)讓人的心情愉快,讀起代碼也就不累,工整、整潔的程序代碼,通常更讓人歡迎,也更讓人稱道,F(xiàn)在的硬盤空間這么大,不要讓你的代碼擠在一起,這樣它們會(huì)抱怨你虐待它們的。好了,用"縮進(jìn)、空格、換行、空行、對(duì)齊"裝飾你的代碼吧,讓他們從沒有秩序的土匪中變成一排排整齊有秩序的正規(guī)部隊(duì)吧。
3、程序注釋
------
養(yǎng)成寫程序注釋的習(xí)慣,這是每個(gè)程序員所必須要做的工作。我看過那種幾千行,卻居然沒有一行注釋的程序。這就如同在公路上駕車卻沒有路標(biāo)一樣。用不了多久,連自己都不知道自己的意圖了,還要花上幾倍的時(shí)間才看明白,這種浪費(fèi)別人和自己的時(shí)間的人,是最為可恥的人。
是的,你也許會(huì)說,你會(huì)寫注釋,真的嗎?注釋的書寫也能看出一個(gè)程序員的功底。一般來說你需要至少寫這些地方的注釋:文件的注釋、函數(shù)的注釋、變量的注釋、算法的注釋、功能塊的程序注釋。主要就是記錄你這段程序是干什么的?你的意圖是什么?你這個(gè)變量是用來做什么的?等等。
不要以為注釋好寫,有一些算法是很難說或?qū)懗鰜淼?只能意會(huì),我承認(rèn)有這種情況的時(shí)候,但你也要寫出來,正好可以訓(xùn)練一下自己的表達(dá)能力。而表達(dá)能力正是那種悶頭搞技術(shù)的技術(shù)人員最缺的,你有再高的技術(shù),如果你表達(dá)能力不行,你的技術(shù)將不能得到充分的發(fā)揮。因?yàn)?這是一個(gè)團(tuán)隊(duì)的時(shí)代。
好了,說幾個(gè)注釋的技術(shù)細(xì)節(jié):
i) 對(duì)于行注釋("http://")比塊注釋("/* */")要好的說法,我并不是很同意。因?yàn)橐恍├习姹镜腃編譯器并不支持行注釋,所以為了你的程序的移植性,請(qǐng)你還是盡量使用塊注釋。
ii) 你也許會(huì)為塊注釋的不能嵌套而不爽,那么你可以用預(yù)編譯來完成這個(gè)功能。使用"#if 0"和"#endif"括起來的代碼,將不被編譯,而且還可以嵌套。
4、函數(shù)的[in][out]參數(shù)





