13年後的共鳴-在代碼中用中文命名的優點和問題

早在2004年的關於中文編程 - 張瑋的專欄 - 博客頻道 - CSDN.NET一文中很是有前瞻性地闡述了用中文編寫代碼對改善可讀性的意義, 今日代碼可讀性已經愈來愈被業界重視而成爲代碼審覈的一部分.git

文中提到的幾個論點尤爲有共鳴:程序員

我常常見到爲取變量名和類名查字典的狀況,這還算是好的。有時候遇到很差查字典或者理解不許確甚至是心情很差,亂起一個名字,就會搞得後來讀程序頭痛。「道可道,很是道;名可名,很是名」。《道德經》把名放在開篇中,可見一個好的名字的重要性。我以爲名字就表明對事物本質的認識,再加上軟件這樣一個東西,其中的大部分事物幾乎都是創造出來的,若是沒有一個好的名字,就會讓人很難以理解。我以爲名字差有三方面的緣由:github

一、名字表明程序員對事物本質的認識,一個壞的名字可能意味着概念的模糊。有多是程序員對事物的劃分不許確,這些東西在一塊兒只是偶然的,從而取不出好的名字,由於這個事物的邊界是模糊的;也有可能開始的時候是準確的,但後來隨着事物的發展,這個東西的性質已經改變,原來的名字已經反映不出它的本質了。這個時候就須要改一個更準確的名字,但因爲沒有方法論和工具的保證,這種變更每每不太容易,所以不少人不會願意作這種變化。...編程

二、認爲名字不重要,這個上面我已經談到。工具

三、認識也是準確的,也想取一個好名字,可是由於語言的限制,取不了好名字。開發工具

這個正是我想說的問題。所以咱們就要在源代碼中使用中文。那有的人說,如今的語言大多支持中文的註釋,用中文註釋不就OK了嗎?關於這個觀點,請參見Refactoring中的論述,總之,結論是,作爲向高級語言進化的第一步,彙編語言中出現的關於變量名,方法名等等,正是天然的表達人的思想的地方,從這個角度上來看,註釋倒反是副產品,也就是說,在用變量名,方法名,類名等等不能表達的時候,在用Refactoring不能解決問題的時候,才用註釋來解決。.net

文中提到的問題在13年後的今天也尚未徹底的解決:插件

最現實的一個問題是:環境的支持。最基本的是運行環境和編譯環境,我大部分時間都生活在Java環境中,不多數狀況會有不支持的狀況,我記得遇到過的不支持的狀況好象是WebLogic不支持有中文方法名的EJB。總之,這方面的不支持是比較少的。IDE的支持通常也是能夠的,可是對輸入的支持通常都很差。好比有一箇中文方法名,若是要想在彈出的選單中選中文方法名,都是很痛苦的。我能想到的比較好的方法應該是象E語言同樣:象輸入"中文",只須要輸入"zhongwen"或"zw",或"zhw"便可。但如今幾乎全部的開發工具都不支持,我想有一天這種輸入方法應該是會被支持的。blog

兩個問題都是生態環境對中文(或者說非英文)的支持, 這須要更多在源碼/文件名中使用中文來推進解決.ip

關於中文輸入法, 理想的解決方式是支持多種輸入法(不只是拼音), 並且與IDE原有的代碼自動補全功能無縫集成. 經過插件在主流IDE中實現這一功能。 最近發現了一個開源實現,在TypeScript+VSCode中實現了根據拼音首字母或者拼音的部分來匹配中文標識符。雖然隨着VSCode的新版本發佈而失效,反映了IDE插件對IDE的依賴性問題,但仍證明了可行性,有很多借鑑意義。

相關文章
相關標籤/搜索