編程必備的32個(gè)修養(yǎng),你占了幾個(gè)?
[導(dǎo)讀]要學(xué)嵌入式,關(guān)注@我要學(xué)嵌入式,嵌入式猛男的加油站。什么是好的程序員?是不是懂得很多技術(shù)細(xì)節(jié)?還是懂底層編程?還是編程速度比較快?我覺(jué)得都不是。對(duì)于一些技術(shù)細(xì)節(jié)來(lái)說(shuō)和底層的技術(shù),只要看幫助,查資料就能找到,對(duì)于速度快,只要編得多也就熟能生巧了。我認(rèn)為好的程序員應(yīng)該有以下幾方面的素...
要學(xué)嵌入式,關(guān)注@我要學(xué)嵌入式,嵌入式猛男的加油站。
什么是好的程序員?是不是懂得很多技術(shù)細(xì)節(jié)?還是懂底層編程?還是編程速度比較快?我覺(jué)得都不是。對(duì)于一些技術(shù)細(xì)節(jié)來(lái)說(shuō)和底層的技術(shù),只要看幫助,查資料就能找到,對(duì)于速度快,只要編得多也就熟能生巧了。我認(rèn)為好的程序員應(yīng)該有以下幾方面的素質(zhì):
不,完全就是在搞破壞,他們與其說(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ù)一般,但有良好的寫(xiě)程序風(fēng)格的程序員,也不要那種技術(shù)強(qiáng)、動(dòng)作快的“搞破壞”的程序員。有句話叫“字如其人”,我想從程序上也能看出一個(gè)程序員的優(yōu)劣。因?yàn)?,程序是程序員的作品,作品的好壞直截關(guān)系到程序員的聲譽(yù)和素質(zhì)。而“修養(yǎng)”好的程序員一定能做出好的程序和軟件。有個(gè)成語(yǔ)叫“獨(dú)具匠心”,意思是做什么都要做得很專(zhuān)業(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ò)這些,你可以寫(xiě)出質(zhì)量高的程序,同時(shí)也會(huì)讓看你程序的人漬漬稱(chēng)道,那些看過(guò)你程序的人一定會(huì)說(shuō):“這個(gè)人的編程修養(yǎng)不錯(cuò)”。
01
版權(quán)和版本
好的程序員會(huì)給自己的每個(gè)函數(shù),每個(gè)文件,都注上版權(quán)和版本。對(duì)于C/C 的文件,文件頭應(yīng)該有類(lèi)似這樣的注釋?zhuān)?/span>/************************************************************************
*
* 文件名:network.c
*
* 文件描述:網(wǎng)絡(luò)通訊函數(shù)集
*
* 創(chuàng)建人:Hao Chen, 2003年2月3日
*
* 版本號(hào):1.0
*
* 修改記錄:
*
************************************************************************/
而對(duì)于函數(shù)來(lái)說(shuō),應(yīng)該也有類(lèi)似于這樣的注釋?zhuān)?br />
/*================================================================
*
* 函 數(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)始。
02
縮進(jìn)、空格、換行、空行、對(duì)齊
i) 縮進(jìn)應(yīng)該是每個(gè)程序都會(huì)做的,只要學(xué)程序過(guò)程序就應(yīng)該知道這個(gè),但是我仍然看過(guò)不縮進(jìn)的程序,或是亂縮進(jìn)的程序,如果你的公司還有寫(xiě)程序不縮進(jìn)的程序員,請(qǐng)毫不猶豫的開(kāi)除他吧。并以破壞源碼罪起訴他,還要他賠償讀過(guò)他程序的人的精神損失費(fèi)??s進(jìn),這是不成文規(guī)矩,我再重提一下吧,一個(gè)縮進(jìn)一般是一個(gè)TAB鍵或是4個(gè)空格。(最好用TAB鍵)ii) 空格。空格能給程序代來(lái)什么損失嗎?沒(méi)有,有效的利用空格可以讓你的程序讀進(jìn)來(lái)更加賞心悅目。而不一堆表達(dá)式擠在一起??纯聪旅娴拇a: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ǔ)句都寫(xiě)在一行上,這樣很不好。如:for(i=0;i'9')
什么是好的程序員?是不是懂得很多技術(shù)細(xì)節(jié)?還是懂底層編程?還是編程速度比較快?我覺(jué)得都不是。對(duì)于一些技術(shù)細(xì)節(jié)來(lái)說(shuō)和底層的技術(shù),只要看幫助,查資料就能找到,對(duì)于速度快,只要編得多也就熟能生巧了。我認(rèn)為好的程序員應(yīng)該有以下幾方面的素質(zhì):
-
1、有專(zhuān)研精神,勤學(xué)善問(wèn)、舉一反三。
-
2、積極向上的態(tài)度,有創(chuàng)造性思維。
-
3、與人積極交流溝通的能力,有團(tuán)隊(duì)精神。
-
4、謙虛謹(jǐn)慎,戒驕戒燥。
-
5、寫(xiě)出的代碼質(zhì)量高。包括:代碼的穩(wěn)定、易讀、規(guī)范、易維護(hù)、專(zhuān)業(yè)。
不,完全就是在搞破壞,他們與其說(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ù)一般,但有良好的寫(xiě)程序風(fēng)格的程序員,也不要那種技術(shù)強(qiáng)、動(dòng)作快的“搞破壞”的程序員。有句話叫“字如其人”,我想從程序上也能看出一個(gè)程序員的優(yōu)劣。因?yàn)?,程序是程序員的作品,作品的好壞直截關(guān)系到程序員的聲譽(yù)和素質(zhì)。而“修養(yǎng)”好的程序員一定能做出好的程序和軟件。有個(gè)成語(yǔ)叫“獨(dú)具匠心”,意思是做什么都要做得很專(zhuān)業(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ò)這些,你可以寫(xiě)出質(zhì)量高的程序,同時(shí)也會(huì)讓看你程序的人漬漬稱(chēng)道,那些看過(guò)你程序的人一定會(huì)說(shuō):“這個(gè)人的編程修養(yǎng)不錯(cuò)”。
01
版權(quán)和版本
好的程序員會(huì)給自己的每個(gè)函數(shù),每個(gè)文件,都注上版權(quán)和版本。對(duì)于C/C 的文件,文件頭應(yīng)該有類(lèi)似這樣的注釋?zhuān)?/span>/************************************************************************
*
* 文件名:network.c
*
* 文件描述:網(wǎng)絡(luò)通訊函數(shù)集
*
* 創(chuàng)建人:Hao Chen, 2003年2月3日
*
* 版本號(hào):1.0
*
* 修改記錄:
*
************************************************************************/
而對(duì)于函數(shù)來(lái)說(shuō),應(yīng)該也有類(lèi)似于這樣的注釋?zhuān)?br />
/*================================================================
*
* 函 數(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)始。
02
縮進(jìn)、空格、換行、空行、對(duì)齊
i) 縮進(jìn)應(yīng)該是每個(gè)程序都會(huì)做的,只要學(xué)程序過(guò)程序就應(yīng)該知道這個(gè),但是我仍然看過(guò)不縮進(jìn)的程序,或是亂縮進(jìn)的程序,如果你的公司還有寫(xiě)程序不縮進(jìn)的程序員,請(qǐng)毫不猶豫的開(kāi)除他吧。并以破壞源碼罪起訴他,還要他賠償讀過(guò)他程序的人的精神損失費(fèi)??s進(jìn),這是不成文規(guī)矩,我再重提一下吧,一個(gè)縮進(jìn)一般是一個(gè)TAB鍵或是4個(gè)空格。(最好用TAB鍵)ii) 空格。空格能給程序代來(lái)什么損失嗎?沒(méi)有,有效的利用空格可以讓你的程序讀進(jìn)來(lái)更加賞心悅目。而不一堆表達(dá)式擠在一起??纯聪旅娴拇a: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ǔ)句都寫(xiě)在一行上,這樣很不好。如:for(i=0;i





