如何寫出優雅的代碼?
01-04
就跟練字一樣,首先你要找到名家字帖,其次需要大量練習
多寫,寫的少說啥都是空話。講語法和應用的書一般培養不出所謂的「優雅」,不是作者水平高不高的問題,是這樣的書本來就應該務實,不扯淡。講編程「美感」的書呢,一般來說,如果寫代碼不夠多,只是讀書,毫無收益,只會害了自己。
所以首先還是要寫。
把好代碼當作文學作品般欣賞,培養審美觀。
跟你媽商量一下,把你戶口本上的出生日期改成處女座的。。。
言歸正傳,除了蘑菇叔說的以外補充一點。現在有很多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本書,可能會幫到你:- 《代碼大全2》
- 《程序員修鍊之道——從小工到專家》
- 《代碼整潔之道》
參考《clean code》和《code complete》
其他同學說了很多了,我就說一個:不要用拼音
命名遵循一套規範,不要各種風格都摻和進來利用formatter對於代碼進行合理的縮進注釋要詳盡
給每一個變數、每一個函數起一個溫暖的名字(&>^ω^
靠祖傳嘍
首先肯定是多寫,,
其次,找一些好代碼來看,雖然不排除 Linux,XNU 源代碼中也有很多極爛的地方,但是這些總比你要強的多。
這麼多操作系統內核源代碼,如果還不夠你看的,我就不知道你該看什麼了,
可以一看
知乎上怎麼這麼多優雅系列?求不裝逼
解耦
推薦閱讀:
※如何理解漢諾塔的遞歸?
※為什麼近幾年浙江省信息學競賽這麼厲害?
※C語言中,單個&和|,與成雙的&&和||,區別在哪裡?
※強人工智慧的產生是否離不開數理邏輯的支撐?
※求幫助,Python閉包和返回函數問題?