- 論壇徽章:
- 0
|
這是陳皓Blog上的文章
http://blog.csdn.net/haoel/
編程修養(yǎng)
――――――――――――――――――――――――――――
什么是好的程序員?是不是懂得很多技術(shù)細節(jié)?還是懂底層編程?還是編程速度比較快?我覺得都不是。對于一些技術(shù)細節(jié)來說和底層的技術(shù),只要看幫助,查資料就能找到,對于速度快,只要編得多也就熟能生巧了。
我認(rèn)為好的程序員應(yīng)該有以下幾方面的素質(zhì):
1、有專研精神,勤學(xué)善問、舉一反三。
2、積極向上的態(tài)度,有創(chuàng)造性思維。
3、與人積極交流溝通的能力,有團隊精神。
4、謙虛謹(jǐn)慎,戒驕戒燥。
5、寫出的代碼質(zhì)量高。包括:代碼的穩(wěn)定、易讀、規(guī)范、易維護、專業(yè)。
這些都是程序員的修養(yǎng),這里我想談?wù)劇熬幊绦摒B(yǎng)”,也就是上述中的第5點。我覺得,如果我要了解一個作者,我會看他所寫的小說,如果我要了解一個畫家,我會看他所畫的圖畫,如果我要了解一個工人,我會看他所做出來的產(chǎn)品,同樣,如果我要了解一個程序員,我想首先我最想看的就是他的程序代碼,程序代碼可以看出一個程序員的素質(zhì)和修養(yǎng),程序就像一個作品,有素質(zhì)有修養(yǎng)的程序員的作品必然是一圖精美的圖畫,一首美妙的歌曲,一本賞心悅目的小說。
我看過許多程序,沒有注釋,沒有縮進,胡亂命名的變量名,等等,等等,我把這種人統(tǒng)稱為沒有修養(yǎng)的程序,這種程序員,是在做創(chuàng)造性的工作嗎?不,完全就是在搞破壞,他們與其說是在編程,還不如說是在對源程序進行“加密”,這種程序員,見一個就應(yīng)該開除一個,因為他編的程序所創(chuàng)造的價值,遠遠小于需要在上面進行維護的價值。
程序員應(yīng)該有程序員的修養(yǎng),那怕再累,再沒時間,也要對自己的程序負責(zé)。我寧可要那種動作慢,技術(shù)一般,但有良好的寫程序風(fēng)格的程序員,也不要那種技術(shù)強、動作快的“搞破壞”的程序員。有句話叫“字如其人”,我想從程序上也能看出一個程序員的優(yōu)劣。因為,程序是程序員的作品,作品的好壞直截關(guān)系到程序員的聲譽和素質(zhì)。而“修養(yǎng)”好的程序員一定能做出好的程序和軟件。
有個成語叫“獨具匠心”,意思是做什么都要做得很專業(yè),很用心,如果你要做一個“匠”,也就是造詣高深的人,那么,從一件很簡單的作品上就能看出你有沒有“匠”的特性,我覺得做一個程序員不難,但要做一個“程序匠”就不簡單了。編程序很簡單,但編出有質(zhì)量的程序就難了。
我在這里不討論過深的技術(shù),我只想在一些容易讓人忽略的東西上說一說,雖然這些東西可能很細微,但如果你不注意這些細微之處的話,那么他將會極大的影響你的整個軟件質(zhì)量,以及整個軟件程的實施,所謂“千里之堤,毀于蟻穴”。
“細微之處見真功”,真正能體現(xiàn)一個程序的功底恰恰在這些細微之處。這就是程序員的——編程修養(yǎng)。我總結(jié)了在用C/C++語言(主要是C語言)進行程序?qū)懽魃系娜䝼“修養(yǎng)”,通過這些,你可以寫出質(zhì)量高的程序,同時也會讓看你程序的人漬漬稱道,那些看過你程序的人一定會說:“這個人的編程修養(yǎng)不錯”。
————————————————————————
01、版權(quán)和版本
02、縮進、空格、換行、空行、對齊
03、程序注釋
04、函數(shù)的[in][out]參數(shù)
05、對系統(tǒng)調(diào)用的返回進行判斷
06、if 語句對出錯的處理
07、頭文件中的#ifndef
08、在堆上分配內(nèi)存
09、變量的初始化
10、h和c文件的使用
11、出錯信息的處理
12、常用函數(shù)和循環(huán)語句中的被計算量
13、函數(shù)名和變量名的命名
14、函數(shù)的傳值和傳指針
15、修改別人程序的修養(yǎng)
16、把相同或近乎相同的代碼形成函數(shù)和宏
17、表達式中的括號
18、函數(shù)參數(shù)中的const
19、函數(shù)的參數(shù)個數(shù)
20、函數(shù)的返回類型,不要省略
21、goto語句的使用
22、宏的使用
23、static的使用
24、函數(shù)中的代碼尺寸
25、typedef的使用
26、為常量聲明宏
27、不要為宏定義加分號
28、||和&&的語句執(zhí)行順序
29、盡量用for而不是while做循環(huán)
30、請sizeof類型而不是變量
31、不要忽略Warning
32、書寫Debug版和Release版的程序
1、版權(quán)和版本
———————
好的程序員會給自己的每個函數(shù),每個文件,都注上版權(quán)和版本。
對于C/C++的文件,文件頭應(yīng)該有類似這樣的注釋:
/************************************************
*
* 文件名:network.c
*
* 文件描述:網(wǎng)絡(luò)通訊函數(shù)集
*
* 創(chuàng)建人: Hao Chen, 2003年2月3日
*
* 版本號:1.0
*
* 修改記錄:
*
**************************************************/
而對于函數(shù)來說,應(yīng)該也有類似于這樣的注釋:
/*==========================================================
*
* 函 數(shù) 名:XXX
*
* 參 數(shù):
*
* type name [IN] : descripts
*
* 功能描述:
*
* ..............
*
* 返 回 值:成功TRUE,失敗FALSE
*
* 拋出異常:
*
* 作 者:ChenHao 2003/4/2
*
================================================================*/
這樣的描述可以讓人對一個函數(shù),一個文件有一個總體的認(rèn)識,對代碼的易讀性和易維護性有很大的好處。這是好的作品產(chǎn)生的開始。
2、縮進、空格、換行、空行、對齊
————————————————
i) 縮進應(yīng)該是每個程序都會做的,只要學(xué)程序過程序就應(yīng)該知道這個,但是我仍然看過不縮進的程序,或是亂縮進的程序,如果你的公司還有寫程序不縮進的程序員,請毫不猶豫的開除他吧,并以破壞源碼罪起訴他,還要他賠償讀過他程序的人的精神損失費?s進,這是不成文規(guī)矩,我再重提一下吧,一個縮進一般是一個TAB鍵或是4個空格。(最好用4個空格)size;
ha = ( ha * 128 + *key++ ) % tabPtr->size;
有空格和沒有空格的感覺不一樣吧。一般來說,語句中要在各個操作符間加空格,函數(shù)調(diào)用時,要以各個參數(shù)間加空格。如下面這種加空格的和不加的:
if ((hProc=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid))==NULL){
}
if ( ( hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid) ) == NULL ){
}
iii) 換行。不要把語句都寫在一行上,這樣很不好。如:
for(i=0;i'9')&&(a'z')) break;
我拷,這種即無空格,又無換行的程序在寫什么?加上空格和換行吧。
for ( i=0; i '9' ) &&
( a 'z' ) ) {
break;
}
}
好多了吧?有時候,函數(shù)參數(shù)多的時候,最好也換行,如:
CreateProcess(
NULL,
cmdbuf,
NULL,
NULL,
bInhH,
dwCrtFlags,
envbuf,
NULL,
&siStartInfo,
&prInfo
);
條件語句也應(yīng)該在必要時換行:
if ( ch >= '0' || ch = 'a' || ch = 'A' || ch
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/12308/showart_137658.html |
|