推薦給菜鳥的編程書

做者:Soroush Khanlou,原文連接,原文日期:2016-6-27
譯者:X140Yu;校對:Crystal Sun;定稿:CMBgit

有一些剛剛開始編程的人會問我,如何才能從寫代碼轉變成寫漂亮的代碼,爲此,我會推薦一些書,對於剛開始編程的菜鳥來講,這些書很是贊。對於像我這種已經有幾年編程經驗的老鳥來講,仍能從中學到東西。這些書有很大一部分都是用其餘語言如 C、Ruby 或者 Java 寫的,讀這些書多是個不小的挑戰。還好在大多數狀況下,任何編程語言均可以清晰表達編程思想,何況早點培養多語言編程技能也不是一件壞事。程序員

Practical Object-Oriented Design in Ruby

做者 Sandi Metzgithub

長時間關注個人讀者都瞭解我對 Sandi Metz 的偏心。我以爲她作的最棒的事情就是給聰明人解釋簡單的概念,本書也不例外。數據庫

她用修自行車來類比面向對象,從只包含一個方法的對象開始完整地實現Fowler在Refactoring一書中介紹的「用多態模式替換條件表達式」。這本書並非一下扔給你一大堆概念,而是按部就班由淺入深地進行講解。編程

Design Patterns

做者 Gamma、Helm、Johnson 和 Vlissidesswift

這四位做者被你們稱爲「四劍客」,這本書出版於 1994 年。是第一本介紹常見的設計模式的書,講述何時應該如何使用這些設計模式,附帶使用示例代碼。我推薦的幾本書都是這種類型的,雖然看起來很像教科書,但也能能夠讀普通書那樣快速翻閱,當要使用某個設計模式時,就知道應該跳到哪一章來獲取須要的詳細知識了。設計模式

這本書創做於在桌面應用時代,其中的一些設計模式也是針對那個時代的。好比命令模式,對於菜單中沒有功能,使用命令行很是有用。可是這些動做場景在 iOS 和 Web 開發中很難見到,因此命令模式可能有點過期了。可是設計模式解決問題的過程,有助於爲你本身的問題想出有創造力的解決方法。框架

Patterns of Enterprise Application Architecture

做者 Martin Fowler編程語言

上一本書創造於桌面圖形應用的時代,而這本書誕生於 Web 年代。書名看起來很枯燥,不過我發現此書包含了一系列有用的模式。讀起來就像在實現一個相似於 Ruby on Rails 框架食譜,因此若是說 DHH 在寫 Ruby on Rails 框架以前讀過這本書,我也不會感到驚訝。ide

這些模式,已被用在 Web 的表單、HTML和數據庫中。前兩類頗有趣,數據庫模式還能夠用於編寫現代的 iOS 應用。若是你想了解一下相似於 Core Data(或者 ActiveRecord)的 ORM 是如何實現的,那能夠看看這本書。好比,Core Data 使用了標識映射、延遲加載、元數據映射和查詢對象等模式。像「四劍客」寫的那本書同樣,在寫代碼時雖然咱們不會用到書中全部的模式,可是做者解決問題的這個過程,仍是很使人興奮的。

Refactoring

做者 Martin Fowler

這本書也是由 Martin Fowler 編寫的。它給重構下了一個準確的定義:

有人問我,「難道重構只是清理代碼?」,在某種程度上,答案是確定的,但我以爲重構更進了一步,由於它爲清理代碼提供了一個更加高效和更爲可控的方式。

這本書還介紹了,重構是如何融入一般的軟件開發過程當中的:

使用重構來開發軟件,須要把時間分爲兩個部分:添加功能和重構。添加的新功能時,不該該改變現有的代碼;你只是添加新的功能。

在介紹和定義了重構以後,Fowler 深刻講解了一系列重構的例子。從抽取方法這種簡單的開始,而後逐漸深刻到相似引入空對象的重構方式。像以前的兩本書同樣,這本書從頭讀到尾也須要花些功夫。

Domain-Driven Design

做者 Eric Evans

以前四本書籍大多介紹模式,這本書有一條小小的敘事線。一個開發者和一個領域的專家,搭建了一個管理船行程的應用。在這個過程當中,從最初的研究階段到實際的編碼過程,你將學到如何把一個領域模型化。我從這本書瞭解到 value types 比 Swift 發佈它的 value types 早了兩年。

做者在程序員和領域專家之間編造的蘇格拉底式對話也有助於咱們理解。有人認爲,在一個理想的世界中,一個產品經理能夠在開發者和利益相關者之間傳話。而在真實的世界中,你(做爲開發者)對於表達軟件的功能和侷限也負有最終的責任,這本書展現相似的應該是什麼樣子。

如何思考 vs 思考什麼

這五本書每一本都有各自的價值——你不只能學到書裏的知識,還能學會如何思考面臨的問題。這些書都遵循着一樣的結構:提出問題,而後給出解決方案。將問題和解決方法聯繫起來,可以看清如何解決的整個過程,最終學會如何處理其餘問題。

本文由 SwiftGG 翻譯組翻譯,已經得到做者翻譯受權,最新文章請訪問 http://swift.gg

相關文章
相關標籤/搜索