1. 程式人生 > >程式設計師需要知道的97件事情之 ------- 簡單就是美

程式設計師需要知道的97件事情之 ------- 簡單就是美

本人英語抄過4級,奇爛無比,翻譯這個實屬蛋疼,錯誤是肯定有的,而且是翻不出來就只是隨便猜,歡迎指出,謝謝。但願我能夠翻完我看的懂的....
原連結:oreilly的程式設計師需要知道的97件事http://programmer.97things.oreilly.com/wiki /index.php/Contributions_Appearing_in_the_Book

[size=medium]下面是一句名言,我認為理解它,銘記在心,對於軟體開發者有很好的幫助:
風格之美、和諧、優雅和優美的節奏全在於簡單。 --柏拉圖
我認為這一句話總結了我們軟體開發者熱切期望的價值。
下面描述了我們程式碼所努力到達的目標:
1. 可讀性強 2。易於維護 3。 快速開發 4。 良好的質量
柏拉圖告訴我們能達到這些質量要求就是簡單。

什麼是優美的程式碼? 這可能是一個非常主觀的問題。對於美麗的理解依賴於每個人的背景。正如我們對於很多事物的立即都依賴我們自身的背景。藝術的教育背景的對於美麗的理解可能和計算機背景的差距就非常大。主修文科在軟體優美方面趨向於比較軟體和藝術工作,而計算機專業更加趨向討論它的均衡性和黃金分割比之類,試著讓本質接近公式之類的東西。依照我的經驗,簡單是唯一能夠兩邊都符合眾多引數的基礎。
回想以前那些你學習過的程式碼。如果你沒有花大量時間去學習他人的程式碼,那請停止現在手中正在學習的程式碼,並去尋找一些優秀的開原始碼來學習。我說的是真的! 搜尋一些自己母語的一些知名技術專家所寫的程式碼,然後再去學習它!

你理解了?很好,我們在哪兒?我現在找出了那些程式碼中和我理解相似的地方,而且我認為優美有很多共性,最主要的就是簡單,我發現無論系統從整體上來是多麼的複雜,那些獨立的模組都保持著簡單的原則。簡單的物件符合單一責任原則,可以專注於函式的命名。有些人認為5到10行的簡短函式式極限,但是有些程式語言很難做到這點,但是,我仍然認為達到如此簡潔是逞心如意的目標。

優美程式碼的底線就是簡單的程式碼。每個獨立的部分儘量保持簡單,和其他模組之間的關係儘量簡單,負責簡單的責任。讓程式碼簡單,方便測試,保持系統在更高的系統吞吐量的開發速度,這也是讓我們系統更加易於維護的一個途徑。[/size]

相關推薦

程式設計師需要知道97事情 ------- 簡單就是

本人英語抄過4級,奇爛無比,翻譯這個實屬蛋疼,錯誤是肯定有的,而且是翻不出來就只是隨便猜,歡迎指出,謝謝。但願我能夠翻完我看的懂的.... 原連結:oreilly的程式設計師需要知道的97件事http://programmer.97things.oreilly.com/

程式設計師需要知道97事情 ------- 謀定而後動

[size=medium] 本人英語抄過4級,奇爛無比,翻譯這個實屬蛋疼,錯誤是肯定有的,而且是翻不出出來就是隨便猜,歡迎指出,謝謝啦。但願我能夠翻完我看的懂的.... 原連結:oreilly的程式設計師需要知道的97件事http://programmer.97th

木訥的程式設計師需要知道事情(一)

最近讀了一本書,叫做極客與團隊,英文名是Team Geek:A Software Developer's Guide to Working Well With Others, 感覺不錯,這裡做一些筆記

初級程式設計師需要知道的基本程式碼規範

1.【強制】大括號的使用約定。如果是大括號內為空,則簡潔地寫成{}即可,不需要換行;如果是非空程式碼塊則:     1) 左大括號前不換行。     2) 左大括號後換行。     3) 右大括號前換行。     4) 右大括號後還有 else 等程式碼則不換行;表示終止的右大

為什麼程式設計師需要知道網際網路行業發展史

相關宣告:寫這篇文章絕不是為了抹黑《極客時間》,相反我相當看好這個產品,並願意為它的成長貢獻一份自己的苦藥。在《極客時間》剛一推出時,我便寫了文章《「極客時間」帶來的社群價值思考》來論述我看好它的原因。《極客時間》的很多專欄我都購買過,如果是純黑,犯不著花費這麼多錢去囤積專欄。 《極客時間》上有一款很異

程式設計師需要知道的演算法

對於程式設計師來說演算法的重要性是毋庸置疑的,這就像從小學一年級就開始學習數學,指導研究生、博士生階段都有與數學有關的不同課程一樣。很多人也許會提出反對意見,指出現在做應用開發,使用JAVA的框架,進行資料處理無非就是CRUD,最重要的是要了解業務,掌握五花八門

XCode裡的模擬器到底在哪裡?我的App被放到哪裡了?程式設計師需要知道的XCODE相關路徑

開發iOS,必然少不了和XCode這個傢伙打交道。平時我們除錯自己的App的時候,最常用到的就是模擬器Simulator了,除錯的時候,我們的App會自動被XCode安裝到模擬器中去,不過: 你知道模擬器這個傢伙在哪兒嗎? 模擬器裡面的目錄結構是什麼樣的? 你的App安裝在模擬器的哪個目錄裡了? 你的App

每個程式設計師應該瞭解的97事情

原文:http://dearymz.blog.163.com/blog/static/205657420139243750104/ 正文之前 熟知軟體開發的人都知道這個行業裡充滿了一次次悲壯的失敗,每一座成功專案的豐碑下都埋葬著無數同類型的失敗專案。大多數軟體專案都像是

程式設計師應該知道97事》

 False consensus bias虛假同感偏差 柏拉圖:風格之美、和諧、優雅及優美的節奏,盡在於簡單 童子軍規則:盡力去做,讓你離開時的世界比你找到它時還要好一點 (Robert Stephenson Smyth Baden-Powell) 電腦科學的

讀《程式設計師應該知道97事》筆記

1技術債務和童子軍規則 技術債務當你發現必須在“幹得好”和“幹得快”之間做出抉擇的時候,一般都會選擇“幹得快”,並提醒自己將來再來返工。下一輪迭代自有其新的問題,工作重點轉移到新問題上,老問題還存在。Martin Fowler把它分成:蓄意和無意把技術 債務立即記錄到任務卡

《程式設計珠璣》程式碼路16:直觀感受為何程式設計師需要學習經典演算法

作為一名老年ACM菜雞,經常見到周圍除了調庫啥也不會的程式設計師,還經常一臉正經的說:“程式設計師就是把人家寫好的東西拿出來呼叫一下,頂多改改嘛。”。emmmm,在這個貓貓狗狗都能養活自己的年代,這麼想確實沒問題 ---- 如果你確定自己不用面臨被淘汰的風險,或者在別的領域能首屈一指。 大家應該

軟體架構師應該知道97概括1-15

架構師是一種神祕的職位,據說每個架構師都有密不可傳的方法,當然我們不信,更多的是隻可意會不可言傳。就是說了我們也不會懂,因為還每到“火候”。所能做的就是,當我們到這種火候的時候我們能想起來曾經有過架構師這麼說過,然後我們就可以更自信的向前大步走.... 1、客戶需求重於個人

程式設計師與架構師的差別的思維方式(老開發感悟)

最近帶一個畢業生,他讓我對文件的撰寫有了一些新的領悟,跟以前的結合起來一起說一下: 首先,我個人在寫文件方面有2個特點:簡潔,清晰 簡潔:能用一句話說清楚的絕不用第二句,用最簡單的句子 清晰:結構清晰,讓人一目瞭然;邏輯清晰,儘量減少讀者的理解成本;重點清晰。 對內的文件 對

程式設計師需要了解的硬核知識CPU

大家都是程式設計師,大家都是和計算機打交道的程式設計師,大家都是和計算機中軟體硬體打交道的程式設計師,大家都是和CPU打交道的程式設計師,所以,不管你是玩兒硬體的還是做軟體的,你的世界都少不了計算機最核心的 - CPU CPU是什麼 CPU 的全稱是 Central Processing Unit,它是你的電

程式設計師需要了解的硬核知識記憶體

我們都知道,計算機是處理資料的裝置,而資料的主要儲存位置就是磁碟和記憶體,並且對於程式設計師來講,CPU 和記憶體是我們必須瞭解的兩個物理結構,它是你通向高階程式設計師很重要的橋樑,那麼本篇文章我們就來介紹一下基本的記憶體知識。 什麼是記憶體 記憶體(Memory)是計算機中最重要的部件之一,它是程式與CPU

程式設計師需要了解的硬核知識磁碟

此篇文章是 《程式設計師需要了解的硬核知識》系列第四篇,歷史文章請戳 程式設計師需要了解的硬核知識之記憶體 程式設計師需要了解的硬核知識之CPU 程式設計師需要了解的硬核知識之二進位制 我們大家知道,計算機的五大基礎部件是 儲存器、控制器、運算器、輸入和輸出裝置,其中從儲存功能的角度來看,可以把儲存器分為記憶

程式設計師需要了解的硬核知識壓縮演算法

此篇文章是《程式設計師需要了解的硬核知識》第五篇文章,歷史文章請戳 程式設計師需要了解的硬核知識之記憶體 程式設計師需要了解的硬核知識之CPU 程式設計師需要了解的硬核知識之二進位制 程式設計師需要了解的硬核知識之磁碟 之前的文章更多的介紹了計算機的硬體知識,會有一些難度,本篇文章的門檻會低一些,一起來看一下

程式設計師需要了解的硬核知識作業系統入門

對於程式設計師來說,最莫大的榮耀莫過於自己的軟體被大多數人使用了吧。 歷史文章請戳 程式設計師需要了解的硬核知識之記憶體 程式設計師需要了解的硬核知識之CPU 程式設計師需要了解的硬核知識之二進位制 程式設計師需要了解的硬核知識之磁碟 程式設計師需要了解的硬核知識之壓縮演算法 本篇文章作為作業系統的入門文章,

程式設計師需要了解的硬核知識作業系統和應用

利用計算機執行程式大部分都是為了提高處理效率。例如,Microsoft Word 這樣的文書處理軟體,是用來提高文字檔案處理效率的程式,Microsoft Excel 等表格計算軟體,是用來提高賬本處理效率的程式。這種為了提高特定處理效率的程式統稱為 應用 程式設計師的工作就是編寫各種各樣的應用來提高工作效率

程式設計師需要了解的硬核知識組合語言(一)

之前的系列文章從 CPU 和記憶體方面簡單介紹了一下組合語言,但是還沒有系統的瞭解一下組合語言,組合語言作為第二代計算機語言,會用一些容易理解和記憶的字母,單詞來代替一個特定的指令,作為高階程式語言的基礎,有必要系統的瞭解一下組合語言,那麼本篇文章希望大家跟我一起來了解一下組合語言。 組合語言和原生代碼 我們