如何寫出優雅的代碼?


就跟練字一樣,首先你要找到名家字帖,其次需要大量練習


多寫,寫的少說啥都是空話。

講語法和應用的書一般培養不出所謂的「優雅」,不是作者水平高不高的問題,是這樣的書本來就應該務實,不扯淡。

講編程「美感」的書呢,一般來說,如果寫代碼不夠多,只是讀書,毫無收益,只會害了自己。

所以首先還是要寫。


把好代碼當作文學作品般欣賞,培養審美觀。


跟你媽商量一下,把你戶口本上的出生日期改成處女座的。。。

言歸正傳,除了蘑菇叔說的以外補充一點。現在有很多codecast,選一些好的看很有幫助的。因為哪怕你自己寫再多,如果不知道什麼是「優雅的代碼」,那也是木有用的。這一點光讀代碼有時候也達不到效果。比如Pluralsight上有Jon Skeet的一系列C#的,看完之後一定會是個好C#狗的。。。但是也不一定是大拿寫的就一定優雅,你看Stackoverflow的Marc Gravell的代碼,讀起來經常有想dos他們網站的衝動。。。


寫?那你首先要練出優雅的字。


在劉鑫前輩的答案上再補充一點:多讀好代碼,這樣自己寫的代碼就有可看齊的目標,有可參考的案例。


沒有注釋,卻很容易看懂。


多寫,多練習,寫的時候注意命名規範,空格縮進換行等


少寫do while for if switch 尤其是 if

不過能做到這些你得會寫庫。


程序命名

  • 容易輸入的名字。比如:Fred,asdf
  • 單字母的變數名。比如:a,b,c, x,y,z(陳皓註:如果不夠用,可以考慮a1,a2,a3,a4,….)
  • 有創意地拼寫錯誤。比如:SetPintleOpening, SetPintalClosing。這樣可以讓人很難搜索代碼。
  • 抽象。比如:ProcessData, DoIt, GetData… 抽象到就跟什麼都沒說一樣。
  • 縮寫。比如:WTF,RTFSC …… (陳皓註:使用拼音縮寫也同樣給力,比如: BT,TMD,TJJTDS)
  • 隨機大寫字母。比如:gEtnuMbER..
  • 重用命名。在內嵌的語句塊中使用相同的變數名有奇效。
  • 使用重音字母。比如:int ínt(註:第二個 ínt不是int)
  • 使用下劃線。比如:_, __, ___。
  • 使用不同的語言。比如混用英語,德語,或是中文拼音。
  • 使用字元命名。比如:slash, asterix, comma…
  • 使用無關的單詞。比如:god, superman, iloveu….
  • 混淆l和1。字母l和數字1有時候是看不出來的。

轉載自:如何寫出無法維護的代碼


同意 @劉鑫 的說法,關鍵是多寫,坑趟的多了代碼自然就「優雅」了。

另外補充一點,單純的強調代碼 「優雅」 意義不大的,因為再牛逼的代碼,只有放到合適的應用場合才能牛逼起來。一旦結合到產品應用中,「優雅」 這個詞來形容代碼就有點雞肋了,我更願意用 "可工作",「高效」, 「健壯」,「擴展性強」 這些辭彙更具體的描述代碼。

一些時候,由於需求緊急或者人員配置等,不得不寫出看起來很「醜陋」,但是確可以工作的代碼,他的價值可能比所謂 「優雅」 的代碼高很多。

但是,追求高代碼質量應該是一個工程師最基本的要求,推薦3本書,可能會幫到你:

  1. 《代碼大全2》

  2. 《程序員修鍊之道——從小工到專家》

  3. 《代碼整潔之道》


參考《clean code》和《code complete》


其他同學說了很多了,我就說一個:不要用拼音


命名遵循一套規範,不要各種風格都摻和進來

利用formatter對於代碼進行合理的縮進

注釋要詳盡


給每一個變數、每一個函數起一個溫暖的名字(&>^ω^


靠祖傳嘍


首先肯定是多寫,,

其次,找一些好代碼來看,雖然不排除 Linux,XNU 源代碼中也有很多極爛的地方,但是這些總比你要強的多。

這麼多操作系統內核源代碼,如果還不夠你看的,我就不知道你該看什麼了,


可以一看


知乎上怎麼這麼多優雅系列?求不裝逼


解耦


推薦閱讀:

如何理解漢諾塔的遞歸?
為什麼近幾年浙江省信息學競賽這麼厲害?
C語言中,單個&和|,與成雙的&&和||,區別在哪裡?
強人工智慧的產生是否離不開數理邏輯的支撐?
求幫助,Python閉包和返回函數問題?

TAG:程序員 | 編程語言 | 編程 | 代碼 | 編程學習 |