Forward
希望標題沒有誤導你。
我的意思是,這其實是一本好書,一本關於設計原則,最佳編碼實踐,測試驅動開發和程式設計藝術的好書。但是他們徑直把它稱為“現代C++程式設計,測試驅動開發”。哎...
喔,請不要誤解。這仍然是一本現代C++程式設計的書。我是說,如果你是一個C++程式設計師,你會喜歡這本書,它充滿了有趣和精益的C++程式碼。事實上,我認為也許程式碼遠多於文字。來吧,現在來瀏覽它。你能找到一頁沒有程式碼嗎?我猜機會不多。如果你想尋找通過一個又一個的例項學習現代C++實踐技巧的書,那麼你手中這本正適合。
但是,本書不光有現代C++程式設計,還有很多其它內容,非常多。首先,就我所知(我見過很多)在測試驅動開發方面,本書可能是最完整,好懂的描述。實際上,最近十年來發現的TDD問題,一半都在本書談到了,包括測試用例的脆弱性和模擬樁(Mock),單一斷言和Given-When-Then模板。這些它都談到了,還附加很多內容。此外,它並非學術化,不繫統,不連慣的問題綱要。相反,本書不光在例子和案例中討論這些問題,它還通過程式碼了展示問題和答案。
必須是一個C++程式設計師才能讀懂這本書?當然不是。本書的C++程式碼非常清晰,並且精心編寫,其中的思想非常好懂,任何Java, C#, C,甚至Ruby程式設計師都不會困惑。
本書還討論了設計原理。感謝上帝,本書是一個設計方面指南!它帶你一步步探索一個又個一個原理,一個又一個問題,一項又一項技巧。從單一職則原則到依賴反轉原則 ,從介面隔離原則到簡單設計的敏捷原則,從DRY到Tell-Don’t-Ask,本書像一個軟體設計思想和方案的金礦。同樣,這些思想也在真實的問題和方案場景下以程式碼的形式呈現。
本書還討論了最佳編碼實踐和技巧。書中擠滿了這些內容,從短小函式技巧(small methods)到結對程式設計,從程式設計訓練會(coding katas)到變數命名。這裡不光有成噸的最佳編碼實踐和技巧的資料,還有足夠的討論和詳細的闡述,作者在每一點上都把你領進了門。
確實,本書的標題完全誤導我們。這不是一本C++程式設計的書。這是一本軟體藝術的書,碰巧使用C++做為例子的程式語言。本書的最恰當的名字應該是:軟體藝術--例項以現代C++語言編寫。
因此,如果你是Java程式設計師,如果你是C#程式設計師,如果你是Ruby,Python,Php,VB,甚至COBOL程式設計師,你需要讀這本書。不要被封面的C++字樣嚇住了,無論如何讀一讀。如果你正在看,讀讀程式碼,它並不難理解。如果你正在學習最佳設計原理,程式碼技巧,程式設計藝術和測試驅動開發,你會發現這一點C++沒什麼大不了。
—“Uncle Bob” Martin Founder, Object Mentor Inc.
備註, 需進一步精化: design principles, coding techniques, craftsmanship的固定譯法,特別是craftsmanship. from the London school to the Cleveland school的故事?
相關文章
- history.forward()Forward
- jsp forward 指令JSForward
- Angular 2 Forward ReferenceAngularForward
- forward_list例子Forward
- kubectl port-forwardForward
- CentOS 7 named配置forwardCentOSForward
- include,forward和param指令Forward
- kubectl port-forward 指令Forward
- fluentd out_forward翻譯Forward
- forward和sendRedirect的區別Forward
- forward和redirect的區別Forward
- pytorch中forward的理解PyTorchForward
- sendRedirect()和forward()方法的區別Forward
- Git提交遇到non-fast-forwardGitASTForward
- C++ 前置定義 Forward declarationC++Forward
- Forward+ Shading架構Forward架構
- JAVA面試題Forward和Redirect區別Java面試題Forward
- c++11 中的 move 與 forwardC++Forward
- pytorch小知識(01):forward方法PyTorchForward
- DNS之BIND使用小結(Forward轉發)DNSForward
- Nginx代理設定 Host 和 X-Forward-ForNginxForward
- Unity的Forward+ FPTL光照剔除解析(一)UnityForward
- Unity的Forward+ FPTL光照剔除解析(三)UnityForward
- Unity的Forward+ FPTL光照剔除解析(四)UnityForward
- Spring MVC之redirect、forward和普通跳轉SpringMVCForward
- 重定向學習小記(forward與sendRedirect) (轉)Forward
- pytorch實現yolov3(3) 實現forwardPyTorchYOLOForward
- c/c++ 標準容器 forward_list resize 操作C++Forward
- 輕鬆理解 Transformers (3): Feed-Forward Layer 部分ORMForward
- Flink Forward Asia 2021 延期,線上相見Forward
- Git 本地推送遠端失敗 non-fast-forwardGitASTForward
- 比較forward動作指令和include動作指令Forward
- 關於前滾(roll forward)和回滾(roll back)Forward
- Using RMAN Incremental Backups to Roll Forward a Physical Standby DatabaseREMForwardDatabase
- 在FILTER中,能取得URI,並且呼叫forward嗎?FilterForward
- Recover physical standby database after loss of archive log – roll forward(轉)DatabaseHiveForward
- C++ forward_list 中插入和刪除操作C++Forward
- JAVA常見面試題之Forward和Redirect的區別Java面試題Forward