許多程式設計師認為程式設計時,如何命名不僅是他們面臨的老大難問題,也是最重要的事情之一。
上週,我發起了乙個「程式設計師程式設計中的老大難問題」的投票,主要是基於最近quora上的跟帖討論。根據大家的反響和投票結果,有一項投票遙遙領先,穩居第一——對於軟體開發人員來說,最大的難題是:如何命名(例如:給變數,類,函式和過程命名等等)。
對於這個結果,我多少有點意外,因為作為乙個多年的開發人員,我不會投給這一項(我想我會投給「修改或維護別人的**」)。但是真正讓我驚訝的是,看起來好像不怎麼重要的命名居然排列第一,跟期待的結果實在差太遠了。下面是投票結果的分布圖。
該結果是來自quora問答**和更早的ubuntu論壇跟帖的4500個開發者的投票。「如何命名」一項的選票幾乎是其它八項的投票結果的總和,哇!
的確,這些基於自我篩選的群體的投票結果是完全不科學的。但是我認為這個結果還是有一定意義的,換句話說,如何命名的確是個很棘手的問題,許多非程式設計人員可能會意識不到。
幾年前在stackexchange社群裡對於這個話題剛好有個跟帖,為了強調這一點,我引用了一些內容是關於程式設計師在程式設計中對於命名的的痛苦和糾結。
「我確實在程式設計的時候花了很多時間在考慮如何命名。」
「我不得不同意命名是一門藝術。」
「如果你想要提高**的可讀性,命名的確很重要。」
我認為最後一條抓住了部分核心,解釋了命名為什麼會這麼難,因為它太重要了。準確的命名可以提高**的可讀性,讓人容易理解,方便除錯,也給以後修改和維護你的**的人帶來方便。一旦開始做了,很快你會發現要想出乙個簡潔又準確的名字沒那麼容易。就像jeff atwood 所寫的:
「想出好的命名的確很難,但是有難的道理,因為好的命名需要只用一兩個單詞出表達你的根本意思。」
而且,許多人認為,正確的命名能幫你寫出好的**。如果不能為乙個變數或者函式想出乙個清晰又簡潔的名字,那可能是你的**有問題。那樣的話,你就得考慮重寫或者進行**重構了。
「通常,如果你無法想出乙個合適的名字,意味著你的設計可能有問題。你的乙個方法裡是不是實現了太多的功能?或者你的類的封裝,凝聚性不夠強?」
「我的經驗是如果無法給你的類想出乙個合適的名字,大多數情況都是你的類有問題:你可能不需要這個類,它有點多餘了」
「命名難也不見得是壞事兒,它可以迫使你去認真思考你的類到底想要實現什麼功能。」
長話短說:如果你想要學習程式設計,一定要給自己準備一本好詞典。
——————
什麼是程式設計師程式設計中的老大難問題?
許多程式設計師認為程式設計時,如何命名不僅是他們面臨的老大難問題,也是最重要的事情之一。上週,我發起了乙個 程式設計師程式設計中的老大難問題 的投票,主要是基於最近quora上的跟帖討論。根據大家的反響和投票結果,有一項投票遙遙領先,穩居第一 對於軟體開發人員來說,最大的難題是 如何命名 例如 給變...
什麼是好的程式設計師
什麼是好的程式設計師 什麼是好的程式設計師?是不是懂得很多技術細節?還是懂底層程式設計?還是程式設計速度比較快?我覺得都不是。對於一些技術細節來說和底層的技術,只要看幫助,查資料就能找到,對於速度快,只要編得多也就熟能生巧了。我認為好的程式設計師應該有以下幾方面的素質 1 有專研精神,勤學善問 舉一...
什麼樣的程式設計師是優秀的程式設計師?
經常在開 壇裡看到一些準備加入軟體開發行列的新人們問同乙個問題 如何成為乙個優秀的程式設計師?1 我眼裡的程式設計師應該是乙個非常俗的人,了解現實社會的商業 文化 民俗風情,對社會生活抱有極大的熱情,而不是哪些不食人間煙火 整天把設計模式 物件導向掛在嘴邊卻永遠不會去實踐的人 2 其次,優秀的程式設...