程式設計師最頭疼的事:命名

JingerJoe發表於2013-06-16

伯樂線上導讀:基於 Quora 網站上的一個關於“程式設計師職業生涯中最難的事”的討論帖,國外開發者 Phil Johnson 10 月中旬在 ITworld 發了一個投票,其結果有點讓他意外。感謝@JingerJoe 傾心翻譯。另外,我們在@程式設計師的那些事 微博發起一個相似投票:《程式設計師,你最頭疼的問題是?》。

許多程式設計師認為程式設計時,如何命名不僅是他們面臨的老大難問題,也是最重要的事情之一。

上週,我發起了一個《程式設計師程式設計中的老大難問題》的投票,主要是基於最近Quora上的跟帖討論,根據大家的反響和投票結果,有一項投票遙遙領先,穩居第一。對於軟體開發人員來說,最大的難題是:如何命名(例如:給變數,類,函式和過程命名等等)。

對於這個結果,我多少有點意外,因為作為一個多年的開發人員,我不會投給這一項(我想我會投給“修改或維護別人的程式碼”)。但是真正讓我驚訝的是,看起來好像不怎麼重要的命名居然排列第一,跟期待的結果實在差太遠了。下面是投票結果的分佈圖。

programmers_hardest_tasks-600x700

該結果是來自Quora問答網站和更早的Ubuntu論壇跟帖的4500個開發者的投票。如何命名一項的選票幾乎是其它八項的投票結果的總和,哇!

的確,這些基於自我篩選的群體的投票結果是完全不科學的。但是我認為這個結果還是有一定意義的,換句話說,如何命名的確是個很棘手的問題,許多非程式設計人員可能會意識不到。

幾年前在StackExchange社群裡對於這個話題剛好有個跟帖,為了強調這一點,我引用了一些內容是關於程式設計師在程式設計中對於命名的的痛苦和糾結。

“我確實在程式設計的時候花了很多時間在考慮如何命名。” 

“我不得不同意命名是一門藝術。” 

“如果你想要提高程式碼的可讀性,命名的確很重要。” 

我認為最後一條抓住了部分核心,解釋了命名為什麼會這麼難,因為它太重要了。準確的命名可以提高程式碼的可讀性,讓人容易理解,方便除錯,也給以後修改和維護你的程式碼的人帶來方便。一旦開始做了,很快你會發現要想出一個簡潔又準確的名字沒那麼容易。就像Jeff Atwood 所寫的:

“想出好的命名的確很難,但是有難的道理,因為好的命名需要只用一兩個單詞出表達你的根本意思。” 

而且,許多人認為,正確的命名能幫你寫出好的程式碼。如果不能為一個變數或者函式想出一個清晰又簡潔的名字,那可能是你的程式碼有問題。那樣的話,你就得考慮重寫或者進行程式碼重構了。

“通常,如果你無法想出一個合適的名字,意味著你的設計可能有問題。你的一個方法裡是不是實現了太多的功能?或者你的類的封裝,凝聚性不夠強?” 

“我的經驗是如果無法給你的類想出一個合適的名字,大多數情況都是你的類有問題:你可能不需要這個類,它有點多餘了” 

“命名難也不見得是壞事兒,它可以迫使你去認真思考你的類到底想要實現什麼功能。”

長話短說:如果你想要學習程式設計,一定要給自己準備一本好詞典。 

 

伯樂線上補充:我們在@程式設計師的那些事 微博發起一個相似投票:《程式設計師,你最頭疼的問題是?》,預知國內程式設計師的情況,請移步檢視。(記得先投票,然後再看結果)

 

相關文章