從事程式設計工作這麼多年,經常會有人問我什麼樣的程式是好程式,有的甚至把程式給我看,讓我給程式提提意見。而我從程式設計開始就踏上尋覓好程式之路。「路漫漫其修遠兮 吾將上下而求索。」這好象正是我心曆的寫照。可以說追求編寫好程式是我不變的目標。
好的程式?好的程式?什麼樣程式是好的?為什麼這樣程式是好的?中國人從小就被「好壞」教育。面對任何事物,他們都能給評出好壞來。評出結果出來,無非讓複雜事物簡單化,讓人在第一時間能判別這件事好不好,這件事能不能做,好的就給與支援和讚美,好的就想去做就想做好。反之。我就不說了。
但是,好壞兩個字好寫,但是事物好壞的理由和標準卻是絕對的複雜,有時甚至絕對的對立。從某種意義上來說,人類就是在事物的好壞上不斷爭鬥中延續著自己。
「白日依山盡,黃河入海流,欲窮千里目,更上一層樓。」我們從小到大,經歷過無數次教育,讀過不知道多少本的書,看過不知道多少篇文章,能夠記憶出來的,能夠背誦出來的,能夠打動自己心扉的,那就是詩了。詩成了生活的濃縮、提煉和昇華。而詩人則成為歷代百姓文人追捧的物件。雖然現代詩處於動盪和衰敗過程之中,但是經過歷史長河沉澱下來的名詩依然膾炙人口,讓人永生難忘,幾乎找不到乙個連一句詩都不會說的人,可見詩的魅力無窮。
編寫程式如同寫文章,有的人會寫成報告,有的人會寫成**,有的人會寫成雜文,文體不限各顯神通。但是我以為,好的程式如同一首詩,讀起來行雲流水,韻味十足。詩中或工整對仗,或錯落有致,或排比擬人,或比喻誇張在程式中也能表現出來。
程式和詩歌都有內容和形式兩個部分。內容是本質,反應了程式的功能,反應了程式的設計水平。形式是表現,反應了內容表述。好的程式應該象一首詩,有好的內容,有好的表現形式。我發現好程式和好詩歌一樣都有一些要素,這些兩者要素有相當的共同點:其要注意如下:
第一要素是要有邏輯。程式的邏輯從大的方面來說是反映了程式的結構,結構清晰明了,才能引人入勝!例如,有詩的格律,如五言、七律等,詩歌只能按照格式填寫,詩的格律就是詩的邏輯構架。程式的邏輯結構往往體現在時序上,例如:初始化處理、功能處理、結束處理。如此設計將使得程式更顯邏輯。從小的方面來時是反映程式構架下的流程,流程次序井然、前接後續,才能使得程式執行順暢。
第二要素是用詞。程式的用詞一方面是指各種變數的命名方式,另一方面是函式命名的方式。程式的用詞應該用英語,變數命名和函式命名其英文單詞無論是用縮寫還是全寫都要符合大眾的讀者的習慣,避免用生詞、偏詞、自造詞。我們看到古今中外的名詩大都是用通俗易懂的詞彙進行藝術組合而形成的。很少有非常用字出現。程式設計中要特別注意函式名中的主謂賓搭配,讓讀者讀起來更加上口。
第三個要素是短小。程式設計如同編寫文章,好的文章如歌如詩,其特點就是短小,一般的五言、七絕只有四行就能包含乙個很深刻的主題了。編寫程式也是相同的道理,要盡量讓程式的行數減少。一方面要考慮在總的程式行數減少,另一方面要增加函式,使得函式裡的語句行數減少。
第四個要素是精煉。一首好詩能在幾句話中就激發讀者的情緒、鼓舞讀者的鬥志、展示大自然的美景,揭示各種人生哲理。其中主要原因是詩人的能用精煉的詞彙來表達詩的內容。對於程式設計來說,精煉就是多用函式,多用系統函式,讓各種功能都濃縮在函式之中。
第五個要素是一致。一首好詩往往能讀到排比、讀到對仗這樣的修辭手法。說到底者都是詩歌的一致性的要求。編寫好的程式同樣要注意一致性的要求,例如,我們盡可能採用相同的語句結構、相同的語句的縮排、相同的命名規則、相同的動詞、相同長度的語句、相同計數變數、相同緩衝區變數、相同的處理函式、相同的處理流程等等。這些相同使得程式各個層次和各個方面看上去非常規範和一致。
當我們能用寫詩的要求去編寫程式,當我們能用詩朗誦的感覺去閱讀程式,我們的程式設計師將不再機械地編寫那毫無生命的**,我們的程式設計師將充滿激情譜寫出一曲動人的樂章,感動著自己,也感動著讀者。每乙個**充滿著活力,是跳躍的藝術音符,無數個**的組成卻是流淌的詩,一段一段,一行一行,給人以詩的享受。我們可能永遠不能寫出傳世之詩,我們卻能夠要求自己編寫如詩的程式,享受那種寫詩的過程和情趣。 不斷地追求詩的境界將會讓我們的程式更加精煉、程式設計工作更加美好。
程式之美 像詩
從事程式設計工作這麼多年,經常會有人問我什麼樣的程式是好程式,有的甚至把程式給我看,讓我給程式提提意見。而我從程式設計開始就踏上尋覓好程式之路。路漫漫其修遠兮 吾將上下而求索。這好象正是我心曆的寫照。可以說追求編寫好程式是我不變的目標。好的程式?好的程式?什麼樣程式是好的?為什麼這樣程式是好的?中國...
年以前的詩 前言 兼談程式與詩之美
前言 兼談程式與詩之美 本來翻譯 effective c 的 blog 突然貼出詩來,可能會讓人覺得有些怪怪的。主要是最近忙工作忙得四腳朝天,每天都要到晚上 10 點多,還要花 1 個多小時的時間趕回家,即使打車也要四五十分鐘。週末也至少要加一天班,剩下的一天睡覺還不夠。翻譯實在是沒有時間進行,進度...
好的程式像一首詩
從事程式設計工作這麼多年,經常會有人問我什麼樣的程式是好程式,有的甚至把程式給我看,讓我給程式提提意見。而我從程式設計開始就踏上尋覓好程式之路。路漫漫其修遠兮 吾將上下而求索。這好象正是我心曆的寫照。可以說追求編寫好程式是我不變的目標。好的程式?好的程式?什麼樣程式是好的?為什麼這樣程式是好的?中國...