寫代碼和寫文章非常相似,都利用電腦工作,都碼字。判斷一段代碼好不好,能考評的也就是代碼的格式,風格還有算法了,下面從這些方面來看看寫代碼和寫文章是多么的相似。
格式
在寫代碼里主要指縮進,空格,空行,對齊等文本排版形式,這個是最最容易到達的一個代碼好的指標,好多的IDE環境都是一鍵自動格式化。好的代碼格式就像好的文章一樣排版精美,段落清晰。代碼的格式美觀是形式美,是外在美。
/** 差的格式舉例 **/ function swap(a, b) { var c=a; a=b; b=c; } /** 好的格式舉例 **/
function swap(a, b){ var c = a; a = b; b=c; }
風格
作家寫作有文風,編碼也有碼風,代碼風格就包含更多的東西了,比如命名風格,比如實現方式。
碼風其實和文風是很像的,比如魯迅散文詩集<野草>中的第一篇,名為<秋夜>。第一段原文如下:“在我的后園,可以看見牆外有兩株樹,一株是棗樹,還有一株也是棗樹。”那換一種文風來描述也可以是:“我家后院牆外種着兩顆棗樹。”
排除需要表達的深層含義,這兩種文字都表達了我家后院有兩棵棗樹,達到的目的是一樣的。無法是采用的詞匯語句不一樣而已,即使得文風不同。在編碼的時候,碼風也是這樣形成的,相同的功能需求,不同的人來編寫,代碼基本也都不是完全一樣的,因為每個人都有自己的碼風,這個碼風就體現在了變量的命名,循環語句的偏好(for還是while)等等等等。
舉個不同碼風的例子:
/** 數組求和 **/
function sum_for(arr){ var sum = 0; for(var i = 0; i < arr.length; i++){ sum += arr[i]; } return sum; } function sum_while(arr){ var sum = 0, i = arr.length; while(i--){ sum += arr[i]; } return sum; }
算法
寫文章會有一個提綱一個骨架。寫代碼也是一樣的,不過我們稱之為算法,算法決定了整個代碼的行文走向,是悲劇還是喜劇。如果你想寫篇文章,因為你有個很好的想法需要表達給你的讀者,但是由於你詞句匱乏,成語還錯用,寫出來的文章就會總是文不達意。相同的寫代碼有時候也會文不達意,因為for語句的語法規則沒弄清楚,處理流程便會出現了預期結果不一致的結果,這個時候我們稱之為BUG了。算法是一段代碼的靈魂思想,正如一篇文章,盡管文風平實,但思想深邃,構思巧妙,發人深省,影響深遠。好的算法也有這種魅力,碼風平實,但用途廣泛,小如快速排序,泛如動態規划,好的算法甚至可以流芳百世,如好的小說被翻譯成各國語言,好的算法也會被各種編程語言實現。編程語言說到底是一種表達工具,是為了表達我們心中的算法的工具。如果寫代碼只追求格式與風格(碼風),毫不理會算法設計,那么就會像寫文章只追求排版與辭藻卻毫無思想,讀完也會空洞無力。所以算法就像代碼的靈魂,是一種內在的美。
現實的世界
現實的世界與理想的世界不同,不過寫代碼又一次神似寫文章了,我們好多的程序員也是復制粘貼,引用第三方類庫,自己組織的部分也僅僅是小部分,底層研發的程序員在業界也總是占小部分。從事編輯工作的大部分工作也是編輯轉載,原創的編輯也是少之又少。
最后
雖然上面幾段我把算法是誇了又誇,推崇至極,但是如果你和我一樣都是創造不了偉大算法的那種平凡人,也就是我們只能在代碼格式和代碼風格上多做努力的朋友們。咱們晦澀難懂的碼風還是少寫一些,做程序員要厚道!以上純屬娛樂~~歡迎大家提供更多有趣的相似點