《程式設計修養》(一本好書!)

2021-04-12 17:32:49 字數 2106 閱讀 4104

《程式設計修養》(一本好書!)

>'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...