您當前的位置:首頁 > 文化

像寫詩一樣寫程式碼

作者:由 張奧 發表于 文化時間:2017-12-20

有人說過,程式碼是人寫給人看的,順便讓計算機執行。

曾經和妹子裝逼,說過自己寫程式碼就像寫詩一樣,可惜得來的是對於工科直男審美的無情嘲笑。雖然那嘲笑的小月牙和梨渦也很美,但是出於工科生的嚴謹,我還是要證明一下我寫程式碼像寫詩一樣。

好的程式碼當然是美的,就像詩一樣美,任何多餘的註釋都是對程式碼本身的褻瀆。美的程式碼有種攝人心魄的力量,讓你一看就會色授魂與,不僅僅是靠IDE規範出來的工整樣式,而是格式、資料與演算法的完美融合。甚至你還能從中看出程式設計師編寫程式碼時的情感,是的,就像詩人寫詩一樣。

如果是為了趕deadline熬夜程式設計,那麼我的程式碼就會沾染上我當時的昏昏欲睡與無精打采,隨意的使用著括號的位置而不費神去安排他們的站位,隨心而至的功能編寫而沒有精巧設計模組化的子功能。而在我用盡最後力氣裹著衣服爬上床倒去後,留下他陪著一堆warning入眠,或者難以入眠。

如果是為了打coding比賽而程式設計,那麼我的程式碼是簡短的不能再簡短的,變數名從a用到e,如果不夠那麼就從aa再開始,因為f、ff以及fff家族是要留給函式的。高度緊張的情況下,我的程式碼會吝惜得不近人情,甚至多餘的一個換行符都捨不得給,害怕這兩秒耽擱了我搶奪一血的大業。和精短的軀幹鮮明對比的,是每個程式碼都有著又長又重的預先寫好的程式碼頭部,極盡我所能想到的標頭檔案以及用的非常順手的宏定義。希望她不是一個愛美的少女,否則一定要指著我的鼻子臭罵一頓然後扔出一堆error。

如果是在一個睡了午覺心情舒暢最好再有些太陽的午後,我的程式碼就會裹挾著陽光下美好的味道,比如青草,比如歡笑,比如promise被首刀。變數命名一定是言簡意賅的,更不會出現拼音拿來當名字,實在想不到明顯含義的時候,還會有Alice、Bob等小夥伴出來救場,他們會上演一出我腦海中的好戲。功能會分解的儘量細碎,就像一個個飾品點綴在主函式中。

如果是在做一個繁瑣到討厭的課程作業,我會像寫八股一樣寫著程式碼,應付著作業要求中的功能,懶於思考這些設計的整體性,就像懶散時東丟一塊西丟一塊的臥室,有時候自己都找不到某些部分的邏輯了。

從優秀的程式碼中也能讀出詩意來。

傳統的老程式碼,特別是經歷過那個磁碟都緊張的年代的程式碼,會有經歷塵世的滄桑,經過了無數次的版本迭代,被保留到現在,或許已經跟不上新的特性,但是那種節省空間、節省時間的內在氣息,就像慈祥的爺爺奶奶在你耳邊叮囑著節約一點、再節約一點。

大公司出來的專案程式碼有著“天生我材必有用”的睥睨,彷佛知道自己是為了改變世界而生的。這些含著金鑰匙出身的程式碼,天然有一種貴族氣息,一行一止、一舉一動、一顰一笑都帶著規矩與大氣,和個人寫出來的或者小公司外包的專案如若雲泥之別。

大牛們個人精心雕琢的程式碼,比起大公司生出的大家閨秀,有著一種小家碧玉的秀氣。雖然不是見多識廣、面面俱到,但是在某些功能應用上,往往有獨到的韻味。當你自己實現起來,才能知道一些“猶抱琵琶半遮面”的細節有著何等的神韻。

好的程式碼是具有詩意的,好的程式設計師自然也是需要詩興的,慶幸自己還不用朝九晚九的在辦公室坐班,擠牙膏一樣擠出每天的任務進度。可以任憑著自己興趣做事,在想要算一個有趣的數學習題時,用python打兩行簡短程式碼,在看到一個好玩專案的時候,fork到自己手裡把玩把玩。

我喜歡詩一樣的程式碼,也想當詩人一樣的程式設計師。