本書的讀者物件是具有一定c++程式設計基礎的程式設計師。
很多程式設計師在剛剛進入到c++程式設計領域時,最大的願望就是盡快地使自己編寫的**能夠執行起來。例如,當我們建立出第乙個漂亮的視窗介面時,完整地顯示出第一張影像時,讓兩個socket之間第一次互相通訊時,總是會激動不已。然而,隨著編碼工作的不斷深入,我們會發現程式將變得越來越龐大和複雜。我們所要面對的將不僅僅只是乙個個簡單的功能,而是乙個相互關聯的功能集合。此時,如果還是按照原來簡單的思路去進行設計,我們會變得越來越力不從心,開發工作總是陷於不停的調整和反覆的修改,而且程式的bug也是不斷出現。所有的這些問題都是因為我們還沒有站在「大規模程式設計」的角度來看待和設計程式。在設計乙個複雜的程式時,我們的重點應該是放在模組之間的相互互動層面上,而不再是某個模組的具體實現上。事實上,在實現相同的模組時,新手和高手之間的乙個重要區別,就是看在實現這個模組時,是不是充分地考慮了與其他模組之間的合理互動。本書所要解決的就是這方面的問題,主要包括:
1) 如何使系統的整體設計更為合理。包括分析和識別出正確的抽象,設計有效的類層次結構,降低類之間的耦合性,提高每個類內部的內聚性,並將系統的各個功能合理地分配到每個類中。這方面的內容可以參考第1,3,8章。
2) 如何防止出現一些微妙的錯誤。c++是一種非常靈活的語言,而這種靈活性也往往會帶來一些微妙的錯誤。如果我們在編碼是沒有充分地意識到這些情況,可能會產生一些難以發現的bug,例如語義上的不一致性,編譯器生成的隱含物件等。這方面的內容可以參考第2,4,6章。
3) 如何合理地使用c++中的高階特性。c++之所以功能強大,是因為它定義了許多功能強大的特性,例如虛函式,運算子過載等。然而,這些高階特性並不是多多益善的,在某些情況下,使用這些高階特性反而會適得其反。這方面的內容可以參考第4,5章。
4) 如何找出程式的效能瓶頸並提高程式的執行效率。在某些情況中,我們在程式的執行速度上有著明確的要求,這就要求我們對程式的執行進行詳細地分析,找出能夠提公升效能的地方。這方面的內容可以參考第7章。
5) 本書在第9章中還討論了多重繼承的內容。雖然需要使用多重繼承的環境是很少的,但這並不意味著這項技術價值就很小,例如,在微軟的com技術中,多重繼承就是基礎技術之一。
此外,本書的講解方式也是值得推薦的地方。本書講解的方式是:首先從實際的程式中抽取出一段有問題**,然後對**中的問題進行逐步深入地分析和講解,最後給出正確的解決方案。這種情形就好像是在專案的周例會上,大家坐在一起來對**進行review,並對一些常見的問題進行討論和改正。從實際中進行分析和總結,這無疑是提公升程式設計能力的有效途徑。
譯者在翻譯本書的時候,已經從事了多年的c++開發工作。回顧這些年的學習和工作經歷,其中不乏痛苦的不眠之夜,當然也有成功解決問題的喜悅。c++語言是一種非常強大的語言,它能適用於許多不同環境下的軟體開發。因此,c++所帶來的強大功能總是難以讓人拒絕。當然,要學好和用好c++同樣是不容易的。學習是乙個困難的過程,不僅要求我們有足夠的毅力,興趣,也要求我們有正確的學習方法,當然健康的身體是首要的保證。
真誠地希望本書能夠極大地提公升讀者的c++程式設計能力。對於本書中的問題和理解困難之處,請給我發e-mail:
[email protected],我會盡力給出答覆。
C程式設計風格
問 如何在原始檔中合理分配函式?答 通常,相關的函式放在同乙個檔案中。有時候 例如開發庫的時候 乙個原始檔 自然也 就是乙個目標檔案 放乙個函式比較合適。有時候,尤其是對某些程式設計師,太多的原始檔可能 會很麻煩,將多數以至所有的程式都放入少數幾個大的原始檔中也很誘人,甚至也是合適的。希望用 sta...
C 程式設計風格約定
我一直自認為,自己在程式設計功力還算說的過去,昨天乙個老師看了我以前寫的 說功力還需加強 當時我很鬱悶,其實我知道的可能還比他多 很多時候我們 都太注重高水平 尖端的技術,其實很多公司叫你寫一段簡單的程式,可能就會決定要不要你。他們是從 中看出了你的閱歷,你的水平。這些水平不是體現你的 尖端技術 況...
C 程式設計風格約定
參考 net設計規範 krzysztof cwalina,brad abrams著 1 必須是實際開發人員使用的約定。為了實現這個目標,我們審查了由.net框架的開發人員編寫的 有些約定並未在框架中普遍應用,對此我們不予採納。2 約定應該盡可能的合理 簡潔。我們認為只要不犧牲 的可讀性,在更少的行數...