我認(rèn)為好的程序員應(yīng)該有以下幾方面的素質(zhì):1、有專研精神,勤學(xué)善問(wèn)、舉一反三。2、積極向上的態(tài)度,有創(chuàng)造性思維。3、與人積極交流溝通的能力,有團(tuán)隊(duì)精神。4、謙虛謹(jǐn)慎,戒驕戒燥。5、寫出的代碼質(zhì)量高。包括:代碼的穩(wěn)定、易讀、規(guī)范、易維護(hù)、專業(yè)。
這些都是程序員的修養(yǎng),這里我想談?wù)劇熬幊绦摒B(yǎng)”,也就是上述中的第5點(diǎn)。我覺(jué)得,如果我要了解一個(gè)作者,我會(huì)看他所寫的小說(shuō),如果我要了解一個(gè)畫(huà)家,我會(huì)看他所畫(huà)的圖畫(huà),如果我要了解一個(gè)工人,我會(huì)看他所做出來(lái)的產(chǎn)品,同樣,如果我要了解一個(gè)程序員,我想首先我最想看的就是他的程序代碼,程序代碼可以看出一個(gè)程序員的素質(zhì)和修養(yǎng),程序就像一個(gè)作品,有素質(zhì)有修養(yǎng)的程序員的作品必然是一圖精美的圖畫(huà),一首美妙的歌曲,一本賞心悅目的小說(shuō)。
我看過(guò)許多程序,沒(méi)有注釋,沒(méi)有縮進(jìn),胡亂命名的變量名,等等,等等,我把這種人統(tǒng)稱為沒(méi)有修養(yǎng)的程序,這種程序員,是在做創(chuàng)造性的工作嗎?不,完全就是在搞破壞,他們與其說(shuō)是在編程,還不如說(shuō)是在對(duì)源程序進(jìn)行“加密”,這種程序員,見(jiàn)一個(gè)就應(yīng)該開(kāi)除一個(gè),因?yàn)樗幍某绦蛩鶆?chuàng)造的價(jià)值,遠(yuǎn)遠(yuǎn)小于需要在上面進(jìn)行維護(hù)的價(jià)值。程序員應(yīng)該有程序員的修養(yǎng),那怕再累,再?zèng)]時(shí)間,也要對(duì)自己的程序負(fù)責(zé)。我寧可要那種動(dòng)作慢,技術(shù)一般,但有良好的寫程序風(fēng)格的程序員,也不要那種技術(shù)強(qiáng)、動(dòng)作快的“搞破壞”的程序員。有句話叫“字如其人”,我想從程序上也能看出一個(gè)程序員的優(yōu)劣。因?yàn)椋绦蚴浅绦騿T的作品,作品的好壞直接關(guān)系到程序員的聲譽(yù)和素質(zhì)。而“修養(yǎng)”好的程序員一定能做出好的程序和軟件。有個(gè)成語(yǔ)叫“獨(dú)具匠心”,意思是做什么都要做得很專業(yè),很用心,如果你要做一個(gè)“匠”,也就是造詣高深的人,那么,從一件很簡(jiǎn)單的作品上就能看出你有沒(méi)有“匠”的特性,我覺(jué)得做一個(gè)程序員不難,但要做一個(gè)“程序匠”就不簡(jiǎn)單了。編程序很簡(jiǎn)單,但編出有質(zhì)量的程序就難了。我在這里不討論過(guò)深的技術(shù),我只想在一些容易讓人忽略的東西上說(shuō)一說(shuō),雖然這些東西可能很細(xì)微,但如果你不注意這些細(xì)微之處的話,那么他將會(huì)極大的影響你的整個(gè)軟件質(zhì)量,以及整個(gè)軟件程的實(shí)施,所謂“千里之堤,毀于蟻穴”。“細(xì)微之處見(jiàn)真功”,真正能體現(xiàn)一個(gè)程序的功底恰恰在這些細(xì)微之處。這就是程序員的——編程修養(yǎng)。我總結(jié)了在用C/C 語(yǔ)言(主要是C語(yǔ)言)進(jìn)行程序?qū)懽魃系娜€(gè)“修養(yǎng)”,通過(guò)這些,你可以寫出質(zhì)量高的程序,同時(shí)也會(huì)讓看你程序的人漬漬稱道,那些看過(guò)你程序的人一定會(huì)說(shuō):“這個(gè)人的編程修養(yǎng)不錯(cuò)”。
1、版權(quán)和版本
好的程序員會(huì)給自己的每個(gè)函數(shù),每個(gè)文件,都注上版權(quán)和版本。對(duì)于C/C 的文件,文件頭應(yīng)該有類似這樣的注釋:/************************************************************************
*
* 文件名:network.c
*
* 文件描述:網(wǎng)絡(luò)通訊函數(shù)集
*
* 創(chuàng)建人:Hao Chen, 2003年2月3日
*
* 版本號(hào):1.0
*
* 修改記錄:
*
************************************************************************/
而對(duì)于函數(shù)來(lái)說(shuō),應(yīng)該也有類似于這樣的注釋:
/*================================================================
*
* 函 數(shù) 名:XXX
*
* 參 數(shù):
*
* type name [IN] : descripts
*
* 功能描述:
*
* ..............
*
* 返 回 值:成功TRUE,失敗FALSE
*
* 拋出異常:
*
* 作 者:ChenHao 2003/4/2
*
================================================================*/
這樣的描述可以讓人對(duì)一個(gè)函數(shù),一個(gè)文件有一個(gè)總體的認(rèn)識(shí),對(duì)代碼的易讀性和易維護(hù)性有很大的好處。這是好的作品產(chǎn)生的開(kāi)始。2、縮進(jìn)、空格、換行、空行、對(duì)齊
i) 縮進(jìn)應(yīng)該是每個(gè)程序都會(huì)做的,只要學(xué)程序過(guò)程序就應(yīng)該知道這個(gè),但是我仍然看過(guò)不縮進(jìn)的程序,或是亂縮進(jìn)的程序,如果你的公司還有寫程序不縮進(jìn)的程序員,請(qǐng)毫不猶豫的開(kāi)除他吧,并以破壞源碼罪起訴他,還要他賠償讀過(guò)他程序的人的精神損失費(fèi)??s進(jìn),這是不成文規(guī)矩,我再重提一下吧,一個(gè)縮進(jìn)一般是一個(gè)TAB鍵或是4個(gè)空格。(最好用TAB鍵)ii) 空格??崭衲芙o程序帶來(lái)什么損失嗎?沒(méi)有,有效的利用空格可以讓你的程序讀進(jìn)來(lái)更加賞心悅目。而不一堆表達(dá)式擠在一起。看看下面的代碼:ha=(ha*128 *key )%tabPtr->size;
ha = ( ha * 128 *key ) % tabPtr->size;
有空格和沒(méi)有空格的感覺(jué)不一樣吧。一般來(lái)說(shuō),語(yǔ)句中要在各個(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) 換行。不要把語(yǔ)句都寫在一行上,這樣很不好。如:for(i=0;i'9')