每一個程序員都應該讀《Unix編程藝術》

本文爲飢人谷講師方方原創文章,首發於 前端學習指南前端

我已經向飢人谷的學員不止十次地推薦過《Unix編程藝術》這本沒有代碼的編程書。
若是你想寫出優雅的代碼,這本書必讀。程序員

並且,知乎上各類編程大神說話時,常常會提到什麼「自底向上」、「模塊化」,該書都有很詳細的解釋。該書用來提高bigger效果十分顯著。面試

看不完沒關係,能看多少是多少。編程

如下是該書對「模塊化」的闡述:微信

  • 軟件設計有兩種方式:一種是設計得極爲簡潔,明顯沒有缺陷;另外一種是設計得極爲複雜,沒有明顯的缺陷。第一種設計方式要可貴多。——《皇帝的舊衣》
  • 模塊化原則就是:要編寫複雜軟件又不至於一塌糊塗的惟一方法,就是用定義清晰的接口把若干簡單模塊組合起來,這樣一來,多數問題只在出如今局部,那麼咱們還有但願對局部進行改寫或優化,不會牽一髮而動全身。
  • 模塊化代碼的首要特質就是封裝。封裝良好的模塊不會過多向外部披露自身的細節,不會直接調用其餘模塊的實現代碼,也不是胡亂共享全局數據。模塊之間經過 API ——一組嚴密的、定義良好的程序調用和數據結構來通行。
  • 正交性是有助於使複雜設計也能緊湊的最重要的特性之一。在純粹的正交設計中,任何操做均無反作用;每個動做只改變一件事情,不會影響其它。不管你控制的是什麼系統,改變每一個屬性的方法有且只有一個。
  • 重複的代碼會致使先後矛盾,產生質量差的代碼。緣由是當你修改這些代碼的時候,每每只修改了一部分而不是所有。一般,這也意味着你對代碼的組織沒有想清楚。
  • 軟件是多層的。通常來講,設計函數或對象的層次結構能夠選擇兩個方向——自頂向下和自底向上。
  • 一個方向是自底向上,就是從具體到抽象——先從要解決的問題中,肯定要進行的具體操做,而後向上進行抽象。另外一個方向是自頂向下,就是從抽象到具體——從最高層面描述整個項目的功能和邏輯,層層向下,直到各個具體的操做。
  • 實際代碼每每是自頂向下和自底向上的綜合產物,同一個項目中常常同時兼有自頂向下的代碼和自底向上的代碼,這就致使了「膠合層」的出現。
  • 膠合層是個挺討厭的東西,必須儘量的薄,這一點極爲重要。膠合層用來將東西粘在一塊兒,但不該該用來隱藏各層的裂縫和不平整。
  • 面向對象理念的價值最初在圖形系統、圖形用戶界面和某些仿真程序中被承認。令你們驚訝並逐漸失望的是,咱們很難發現面向對象在其餘領域有多少顯著的優勢。
  • 面嚮對象語言讓抽象變得很容易——有點太容易了。面嚮對象語言鼓勵「厚重的膠合和複雜的層次」。全部的面嚮對象語言都顯示出某種使程序員陷入過分分層陷阱的傾向。

Unix編程藝術,教你如何優雅地編程。數據結構

加微信號: astak10或者長按識別下方二維碼進入前端技術交流羣 ,暗號:寫代碼啦模塊化

每日一題,每週資源推薦,精彩博客推薦,工做、筆試、面試經驗交流解答,免費直播課,羣友輕分享... ,數不盡的福利免費送函數

相關文章
相關標籤/搜索