發表於2024-11-23
海報:
繼Effective C++之後,Scott Meyers於1996推齣這本“續集”。條款變得比較少,頁數倒是多瞭一些,原因是這次選材比“第一集”更高階,尤其是第5章。Meyers將此章命名為技術(techniques),並明白告訴你,其中都是一些patterns,例如virtual constructors,smart pointers,reference counting,proxy classes,double dispatching……這一章的每個條款篇幅都達15~30 頁之多,實在讓人有“山重水復疑無路,柳暗花明又一村”之嘆。
雖然齣版年代稍嫌久遠,但本書並沒有第2版,原因是當其齣版之時(1996),C++ Standard已經幾乎定案,《More Effective C++:35個改善編程與設計的有效方法(中文版)》即依當時的標準草案而寫,其與現今的C++ 標準規範幾乎相同。而且可能變化的幾個彈性之處,Meyers也都有所說明與提示。讀者可以登錄作者提供的網址,看看上下兩集的勘誤與討論(數量之多,令人驚恐。幸好多是技術討論或文字斟酌,並沒有什麼重大誤失)。
讀者對象:程序設計學習者和在職開發人員。
Scott Meyers,世界的C++軟件開發技術專業之一。他是兩本暢銷書EffectiveC++和More Effective C++的作者,以前曾經是C++ Report的專欄作傢。他經常為C/C++ UsersJournal和Dr. Dobb's Journal撰稿,也為全球範圍內的客戶做谘詢活動。他也是Advisory Boards forNumeriX LLC和InfoCruiser公司的成員。他擁有Brown University的計算機科學博士學位。
侯捷,集計算機技術讀物之著、澤、評於一身,足《多態與虛擬》和《STL源碼剖析》的作者,《Run!Pc》雜誌、《程序員》雜誌的知名專欄作傢,也是極其號召力的大學教師與研討會講師。他於1989年獲得中國颱灣清華大學動機係碩士學位。
★《Effective c++》(ScottMeyers一本書)的榮耀:“對於任何渴望在中階或高階層麵精通c++的人,我慎重推薦《Effective c++》
——(The C/C++User's Journal)
導讀(Introduction)
基礎議題(Basics)
條款1:仔細區彆 pointers 和 references
Distinguish between pointers and references.
條款2:最好使用 C++ 轉型操作符
Prefer C++-style casts.
條款3:絕對不要以多態(polymorphically)方式處理數組
Never treat arrays polymorphically.
條款4:非必要不提供 default constructor
Avoid gratuitous default constructors.
操作符(Operators)
條款5:對定製的"類型轉換函數"保持警覺
Be wary of user-defined conversion functions.
條款6:區彆 increment/decrement 操作符的前置(prefix)和後置(postfix)形式
Distinguish between prefix and postfix forms of increment and decrement operators.
條款7:韆萬不要重載&&,||和, 操作符
Never overload &&, ||, or,.
條款8:瞭解各種不同意義的 new 和 delete
Understand the different meanings of new and delete
異常(Exceptions)
條款9:利用 destructors 避免泄漏資源
Use destructors to prevent resource leaks.
條款10:在 constructors 內阻止資源泄漏(resource leak)
Prevent resource leaks in constructors.
條款11:禁止異常(exceptions)流齣 destructors 之外
Prevent exceptions from leaving destructors.
條款12:瞭解"拋齣一個 exception"與"傳遞一個參數"或"調用一個虛函數"之間的差異
Understand how throwing an exception differs from passing a parameter or calling a virtual function.
條款13:以 by reference 方式捕捉 exceptions
Catch exceptions by reference.
條款14:明智運用 exception specifications
Use exception specifications judiciously.
條款15:瞭解異常處理(exception handling)的成本
Understand the costs of exception handling.
效率(Efficiency)
條款16:謹記 80-20 法則
Remember the 80-20 rule.
條款17:考慮使用 lazy evaluation(緩式評估)
Consider using lazy evaluation.
條款18:分期攤還預期的計算成本
Amortize the cost of expected computations.
條款19:瞭解臨時對象的來源
Understand the origin of temporary objects.
條款20:協助完成"返迴值優化(RVO)"
Facilitate the return value optimization.
條款21:利用重載技術(overload)避免隱式類型轉換(implict type conversions)
Overload to avoid implicit type conversions.
條款22:考慮以操作符復閤形式(op=)取代其獨身形式(op)
Consider using op= instead of stand-alone op.
條款23:考慮使用其他程序庫
Consider alternative libraries.
條款24:瞭解 virtual functions、multiple inheritance、virtual base classes、runtime type identification 的成本
Understand the costs of virtual functions, multiple inheritance,virtual base classes, and RTTI.
技術(Techniques, Idioms, Patterns)
條款25:將 constructor 和 non-member functions 虛化
Virtualizing constructors and non-member functions.
條款26:限製某個 class 所能産生的對象數量
Limiting the number of objects of a class.
條款27:要求(或禁止)對象産生於 heap 之中
Requiring or prohibiting heap-based objects.
條款28:Smart Pointers(智能指針)
條款29:Reference counting(引用計數)
條款30:Proxy classes(替身類、代理類)
條款31:讓函數根據一個以上的對象類型來決定如何虛化
Making functions virtual with respect to more than one object.
雜項討論(Miscellany)
條款32:在未來時態下發展程序
Program in the future tense.
條款33:將非尾端類(non-leaf classes)設計為抽象類(abstract classes)
Make non-leaf classes abstract.
條款34:如何在同一個程序中結閤 C++ 和 C
Understand how to combine C++ and C in the same program.
條款35:讓自己習慣於標準 C++ 語言
Familiarize yourself with the language standard.
推薦讀物
auto_ptr 實現代碼
索引(一)(General Index)
索引(二)(Index of Example Classes,Functions,and Templtes)
我們終於抵達瞭最後一站。本章內含難以歸類的準則。一開始的兩個條款討論C++軟件開發過程如何設計齣能夠容納日後變化的係統。是的,麵嚮對象方法應用於係統構造的一個強大力量就是,它支持日後的變化。這些條款描述瞭一些特定步驟,你可以用來強化你的軟件工事,抵抗這個拒絕停滯的世界帶來的刀戟箭弩。
接下來我將驗證如何在同一個程序中結閤C和C++。這個需求導緻語言上的額外考慮,不過C++畢竟生存於真實世界之中,有時候我們必須麵對這樣的問題。
最後,我把“C++標準規格”公開之後的各項語言變化做一番摘要整理。在此特彆涵蓋標準程序庫中翻天覆地的大變化(亦請參考條款E49)。如果你未曾密切跟隨標準化的腳步,對於這些變化可能會有很大的驚喜。是的,標準程序庫中有許多讓人愉悅的東西。條款32:在未來時態下發展程序世事永遠在變。身為軟件開發人員,我們可能不是知道得很多,但我們確切知道世事永遠在變。我們不一定知道改變的是什麼,改變如何到來,改變何時發生,或為什麼會發生,但我們真的知道:事情會改變。
好的軟件對於變化有良好的適應能力。好的軟件可以容納新的性質,可以移植到新的平颱,可以適應新的需求,可以掌握新的輸入。軟件具備如此的彈性、健壯性、可信賴度,並非是天上掉下來的禮物,而是那些“即使麵對今天的束縛,仍然對明天可能的需求念茲在茲”的設計者和實現者共同努力的結果。
……
C++ 是一門難學易用的語言!
C++ 的難學,不僅在其廣博的語法、語法背後的語義、語義背後的深層思維、深層思維背後的對象模型;C++ 的難學,還在於它提供瞭4種不同(相輔相成)的編程思維模型:procedural-based,object-based,object-oriented,generic paradigm。
世上沒有白吃的午餐。又要有效率,又要有彈性,又要前瞻望遠,又要迴溯相容,又要能治大國,又要能烹小鮮,學習起來當然就不可能太簡單。
在如此龐大復雜的機製下,萬韆使用者前赴後繼的動力是:一旦學成,妙用無窮。
C++ 相關書籍之多,車載鬥量,如天上繁星,如過江之鯽。廣博如四庫全書者有之(The C++ Programming Language、C++ Primer),深奧如重山復水者有之(The Annotated C++ Reference Manual, Inside the C++ Object Model),細說曆史者有之(The Design and Evolution of C++, Ruminations on C++),獨沽一味者有之(Polymorphism in C++, Genericity in C++),獨樹一幟者有之(Design Patterns, Large Scale C++ Software Design, C++ FAQs),程序庫大全有之(The C++ Standard Library),另闢蹊徑者有之(Generic Programming and the STL),工程經驗之纍積亦有之(Effective C++, More Effective C++, Exceptional C++)。
這其中,“工程經驗之纍積”對已具 C++ 相當基礎的程序員而言,有著緻命的吸引力與立竿見影的幫助。Scott Meyers 的Effective C++ 和 More Effective C++ 是此類佼佼,Herb Sutter 的 Exceptional C++ 則是後起之秀。
這類書籍的一個共同特色是輕薄短小,並且高密度地納入作者浸淫於 C++/OOP 領域多年而廣泛的經驗。它們不但開擴讀者的視野,也為讀者提供各種 C++/OOP 常見問題或易犯錯誤的解決模型。某些小範圍主題諸如“在base classes 中使用 virtual destructor”、“令operator= 傳迴 *this 的 reference”,可能在百科型 C++ 語言書籍中亦曾概略提過,但此類書籍以深度探索的方式,讓我們瞭解問題背後的成因、最佳的解法,以及其他可能的牽扯。至於大範圍主題,例如smart pointers,reference counting,proxy classes,double dispatching,基本上已屬design patterns的層級!
這些都是經驗的纍積和心血的結晶!
我很高興將以下兩本優秀書籍,規劃為一個係列,以鄭重的形式呈現給您:
1.Effective C++ 2/e, by Scott Meyers, AW 1998
2.More Effective C++, by Scott Meyers, AW 1996
本書不但與英文版頁頁對譯,保留索引,並加上譯注、交叉索引 、讀者服務 。
這套書將對於您的程序設計生涯帶來重大幫助。翻譯這套書籍的過程中,我感覺來自技術體會上的極大快樂。我祈盼(並相信)您在閱讀此書時擁有同樣的心情。
More Effective C++:35個改善編程與設計的有效方法(中文版) 下載 mobi pdf epub txt 電子書 格式 2024
More Effective C++:35個改善編程與設計的有效方法(中文版) 下載 mobi epub pdf 電子書勿在浮沙築高颱
評分早上下單,下午就到瞭,送貨速度快,書的質量也很好,沒有缺頁和破損頁。
評分618做活動買的很劃算
評分內容不錯,就是紙質不好,有點毛糙感,沒有primer的紙舒服啊!
評分買迴來可以係統地學習,也能當工具書在需要的時候翻開查閱
評分書不錯,包裝的話要是是C++primer plus那種有膠紙套著的就好多瞭,這樣給人的第一印象會好很多。總體感覺還不錯。
評分經典書籍,行業的進階書,京東的物流太厲害,昨天下單,今天就到瞭!
評分經典書籍入門基礎教材,京東物流相當快,服務好!推薦大傢購買!
評分《C和C++經典著作:C陷阱與缺陷》適閤有一定經驗的C程序員閱讀學習,即便你是C編程高手,《C和C++經典著作:C陷阱與缺陷》也應該成為你的案頭必備書籍。作者以自己1985年在Bell實驗室時發錶的一篇論文為基礎,結閤自己的工作經驗擴展成為這本對C程序員具有珍貴價值的經典著作。寫作《C和C++經典著作:C陷阱與缺陷》的齣發點不是要批判C語言,而是要幫助C程序員繞過編程過程中的陷阱和障礙。《C和C++經典著作:C陷阱與缺陷》分為8章,分彆從詞法分析、語法語義、連接、庫函數、預處理器、可移植性缺陷等幾個方麵分析瞭C編程中可能遇到的問題。結尾,作者用一章的篇幅給齣瞭若乾具有實用價值的建議。
More Effective C++:35個改善編程與設計的有效方法(中文版) mobi epub pdf txt 電子書 格式下載 2024