天天看點

《軟體開發實踐:項目驅動式的Java開發指南》正式出版(譯著)

《軟體開發實踐:項目驅動式的Java開發指南》正式出版(譯著)

在疫情期間,我接手了這本書的翻譯工作,由于不能經常外出,是以竟然提前稿,最終在出版社漫長的三審三校下,終于在本月出版。這裡先放出我寫的譯者序以及其他業界老師的推薦序,大家可以從中了解下本書内容。

Java作為OOP的集大成者,融合了其他語言的諸多優點,在經曆了多個版本更新之後,它也重新煥發出新的生機,特别是Java 8的釋出,更是讓開發者體驗到了函數式程式設計的精妙及強大之處。而随着這幾年開源社群的蓬勃發展,越來越多的元件、架構、方案如雨後春筍般湧現,現代工程師大多不用再像前輩們那樣徒手從零開始編寫代碼,而是更多的将精力放在業務功能的實作上,這在很大程度上提高了軟體開發的效率。特别是在Java方面,其技術體系之龐大,解決方案之豐富,完全超出任何其他語言平台,可以說,我們遇到任何一種“釘子”,都能随手找到一大堆“錘子”。但同時我們也會發現,開發中的很多問題,也并非是一個新架構、新方案能完全解決的。以代碼級别的擴充性、可維護性等問題為例,它考察的是工程師對常見設計原則、模式的了解,以及對軟體工程最佳實踐的掌握程度,而這才是工程師真正的核心競争力!

是以譯者一直認為,工程師在學習程式設計技術時,除了要詳細了解程式設計語言的核心API、元件和架構之外,還應該去探索程式設計語言的最佳開發模式,就像習武之人一樣,招數重要,但内功心法更重要。幸運的是,程式設計語言發展數年,前輩們已留下很多被無數次證明的最佳實踐,這些實踐經過時間的沉澱和打磨,逐漸形成一套基本的設計原則,它們是超越架構,甚至是超越語言的存在。作為現代工程師,想要擷取這些資料易如反掌。由于設計原則或設計模式都是經過高度抽象和提煉形成的,初學者非常容易被各種“概念”“詞彙”帶偏,目前市面上很多模式相關的書籍資料,為了讓工程師便于了解,其示例代碼都力求簡單直接,甚至做了非常多的不切實際的具象化(拟人拟物)。是以現實情況是,很少有資料是以真實的項目疊代為藍本進行講解的,這會導緻大家“即使懂很多道理,但仍寫不好代碼”。

而這本書填補了這方面的空白。首先,本書是以項目驅動式的方式來講解的,即核心章節都會根據一個項目案例來引出開發過程中遇到的問題,然後引導讀者一起去思考這些問題的解決方案,甚至包括一些設計權衡上的讨論。這種結合具體的業務場景進行反複驗證、持續疊代的講解方式,能讓讀者有身臨其境之感。其次,本書在内容上涵蓋了工程師必知必會的一些基本設計原則或模式。比如SOLID原則,它們是一組旨在幫助開發易于維護的軟體的原則集,包括:單一職責原則 (SRP)、開閉原則(OCP)、裡氏替換原則(LSP)、接口隔離原則(ISP)、依賴倒置原則(DIP),書中并不會很生硬的介紹每個原則,而是會根據實際情況來引出這些原則的使用方式。最後,本書中在TDD(測試驅動開發)、流暢式API、函數式程式設計等目前比較流行的話題上也有所講解,相信大家同樣會有所收獲。

當然,由于篇幅有限,本書不可能全面詳述上面所有内容,很多時候隻是給讀者指明一個思考的方向,同時在很多問題上,作者并不會很武斷的表達出對某種設計選型上的肯定或否定,一般情況下,我們需要根據實際情況作出選型上的權衡,以找出當下的最優解,假如我們總是期望在最開始就能找到一個絕對正确的答案,很可能會失望而歸。

本書的兩位作者在Java領域都有一定的造詣,他們曾在多個大型國際會議上發表過精彩的主旨演講,同時也是多本暢銷書的作者,比如Raoul-Gabriel Urma博士曾出版過《Java 8實戰》,而Richard Warburton博士曾出版過《Java 8函數式程式設計》,這兩本書可謂是學習Java 8的必備資料,大家應該都比較熟悉。有如此豐富經驗的作者執筆,是以本書在品質上,也應該是經得起推敲的,但具體如何評判,交給廣大讀者更為合适。

由于我是第一次翻譯整書,是以剛拿到原書稿的時候,其實還比較擔心,自己能否給國内讀者呈現出本書的應有之意,好在快速讀完本書之後,發現書中所講内容,也是自己這麼多年來心中所思所想,是以翻譯的還比較開心,整個過程也還算順利,竟然達成了人生第一次提前交稿(笑)。不過由于筆者水準有限,書中所譯内容難免存在詞不達意的情況,在此也請各位讀者朋友批評指正,我的郵箱是[email protected],對書中有任何疑問,都可以通過該郵箱聯系我,謝謝!

在本書的翻譯工作完成之際,我首先要感謝機械工業出版王春華老師的信任,在今年年初,正是她詢問我是否有興趣翻譯本書,最終才促成了這次合作。然後非常感謝我的編輯李忠明老師,他在我的翻譯途中解決了我大量的小白問題。

最後,感謝家人、朋友的支援與陪伴,你們是我前進路上的最大動力!