《程式設計修養》(一本好書!)
>'9')&&(a
<'a'||a
>'z')) break;
我拷,這種即無空格,又無換行的程式在寫什麼啊?加上空格和換行吧。
for ( i=0; i
< '0' || a
> '9' ) &&
( a< 'a' || a
= (char*) calloc ( 100, sizeof(char) );
} (注:上述語句被注釋掉的是原來的,是錯誤的,由dasherest朋友指正,謝謝)
為了**的易讀,省去了一些判斷,請注意這兩種分配的方法,有本質上的差別。
31、不要忽略warning
——————————
對於一些編譯時的警告資訊,請不要忽視它們。雖然,這些warning不會妨礙目標**的生
成,但這並不意味著你的程式就是好的。必竟,並不是編譯成功的程式才是正確的,編譯
成功只是萬里長征的第一步,後面還有大風大浪在等著你。從編譯程式開始,不但要改正
每個error,還要修正每個warning。這是乙個有修養的程式設計師該做的事。
一般來說,一面的一些警告資訊是常見的:
1)宣告了未使用的變數。(雖然編譯器不會編譯這種變數,但還是把它從源程式中注
釋或是刪除吧)
2)使用了隱晦宣告的函式。(也許這個函式在別的c檔案中,編譯時會出現這種警告
,你應該這使用之前使用extern關鍵字宣告這個函式)
3)沒有轉換乙個指標。(例如malloc返回的指標是void的,你沒有把之轉成你實際類
型而報警,還是手動的在之前明顯的轉換一下吧)
4)型別向下轉換。(例如:float f = 2.0; 這種語句是會報警告的,編譯會告訴你
正試圖把乙個double轉成float,你正在閹割乙個變數,你真的要這樣做嗎?還是在2.0後
面加個f吧,不然,2.0就是乙個double,而不是float了)
不管怎麼說,編譯器的warning不要小視,最好不要忽略,乙個程式都做得出來,何況幾個
小小的warning呢?
32、書寫debug版和release版的程式
————————————————
程式在開發過程中必然有許多程式設計師加的除錯資訊。我見過許多專案組,當程式開發結束
時,發動群眾刪除程式中的除錯資訊,何必呢?為什麼不像vc++那樣建立兩個版本的目標
**?乙個是debug版本的,乙個是release版的。那些除錯資訊是那麼的寶貴,在日後的
維護過程中也是很寶貴的東西,怎麼能說刪除就刪除呢?
利用預編譯技術吧,如下所示宣告除錯函式:
#ifdef debug
void trace(char* fmt, ...)
#else
#define trace(char* fmt, ...)
#endif
於是,讓所有的程式都用trace輸出除錯資訊,只需要在在編譯時加上乙個引數「-ddebug
」,如:
cc -ddebug -o target target.c
於是,預編譯器發現debug變數被定義了,就會使用trace函式。而如果要發布給使用者了,
那麼只需要把取消「-ddebug」的引數,於是所有用到trace巨集,這個巨集什麼都沒有,所以
源程式中的所有trace語言全部被替換成了空。一舉兩得,一箭雙鵰,何樂而不為呢?
順便提一下,兩個很有用的系統巨集,乙個是「__file__」,乙個是「__line__」,分別表
示,所在的原始檔和行號,當你除錯資訊或是輸出錯誤時,可以使用這兩個巨集,讓你一眼
就能看出你的錯誤,出現在哪個檔案的第幾行中。這對於用c/c++做的大工程非常的管用。
綜上所述32條,都是為了三大目的——
1、 程式**的易讀性。
2、程式**的可維護性,
3、程式**的穩定可靠性
的細小的問題,程式設計高手不僅技術要強,基礎要好,而且最重要的是要有「修養」!
軟體的維護有大量的工作量花在**的維護上,軟體的upgrade,也有大量的工作花在**的組織上,所以好的**,清淅的,易讀的**,將給大大減少軟體的維護和公升級成本。
迷上了shell程式設計,推薦好書一本
shell程式設計,類似dos下的批處理檔案,也有很大不同,shell更接近一門程式語言。最近迷上了這玩意,入門很容易,再深入就有點難了,寫了幾個簡單的script處理日常命令,用著蠻爽,大大提高了我繼續深入學習linux的積極性,待複習了c語言基礎,準備讀讀 unix linux程式設計實踐教程 ...
一本好書 高質量C C程式設計指南
目錄 前 言.6 第 1 章 檔案結構 11 1.1 版權和版本的宣告 11 1.2 標頭檔案的結構 12 1.3 定義檔案的結構 13 1.4 標頭檔案的作用 13 1.5 目錄結構 14 第 2 章 程式的版式 15 2.1 空行 15 2.2 行 16 2.3 行內的空格 17 2.4 對齊 ...
分享一本學習Linux的好書
linux就該這麼學 是由全國多名紅帽架構師 rhca 基於rhel7系統共同編寫的高質量linux技術自學書籍,各章節知識點從實踐出發且具有較強連貫性,極其適合linux初學者或用作linux相關輔助教材,專注於linux系統與紅帽認證。目前是國內最值得去讀的linux教材,也是最有價值的linu...