程式中的變數名總是起的很長怎麼辦?英文單詞的縮寫有規律麼?
。。原始碼讀少了
主要靠自己憋
都會遇到這個問題
看多了就心裡有數了
謝邀。
首先,不知道你說的長是個什麼概念,個人覺得,在現在有IDE,有程式碼提示的情況下,二三十個字元都算是可以接受的。
我們這裡稍微推廣一下吧,不僅限於變數名,所有識別符號(變數名、函式名)都算進去。起識別符號名字,
關鍵是要清晰,能夠正確的表明含義、功能、作用,保證程式碼的可讀性
。所以,在保證程式碼良好可讀性的前提下,變數名稍微長一些其實沒什麼不好,現在的儲存空間不在乎這一點浪費,現在的編譯器也沒有對變數名的長度做什麼硬性的要求。
在這個原則下,變數名一般就只有兩三個單詞,比如,函式(方法)應該是一個
動詞
或者
動賓短語
(動詞+定語(形容詞)+賓語(名詞)),比如getResponse,sendRequest,如果是C裡面的函式,可能會帶有一個
字首
,比如說pcap_sendpacket,lua_pushinteger。對於成員變數(成員),則應該是一個
名詞
或者
偏正短語
(形容詞+中心語(名詞)),比如RequestHeaders,BufferSize,BackgroundColour。
按照這樣的方法,名字一般都不至於太長。由於前面我們有一個保證可讀性的原則,所以,我個人
不提倡使用縮寫
。即使是使用,也應該是一些熟知的縮寫,比如dev=device,admin=administrator,def=define,func=function,var=variable,val=value,ret=return,int=integer,if=interface,info=information,stat=statistics等等。而且,在使用的時候,應該保證整個程式碼的風格比較統一,不要有的地方用縮寫有的地方不用。
另外,多用一些人家寫的比較好的類庫,就知道那些東西該怎麼命名了。
關於如何縮寫英文單詞,程式碼大全這本書有寫,不過我記憶有些模糊了。
1。 按照英語縮寫習慣,大致能保留原意就行
2。 禁止使用單個字母,迴圈計數除外。
3。 個人不建議超過三個單詞,儘量不用縮寫。
其實關鍵在於基於業務起合適的名字,還有就是保證團隊中每個人都能認同和遵守,合理是最重要的。
補充一點,在Objective-C中,方法名是不在乎長的,它更注重可讀性。
感謝下 @奈米駭客 邀請。
原則上變數名起得長一點不是問題,這倒是說明程式設計師有一個相對良好的程式設計習慣。我記得以前我回答過類似的問題:
http://www。
zhihu。com/question/1986
9158/answer/13228097
瀏覽了一下已有的回答,我覺得@余天升的回答我最認同,就他了吧。但我在這裡提一個反例作為補充。我見過有程式設計師把類名寫得過長的,比如:
namespace RetrieveDomainControllerInformationNS {
class RetrieveDomainControllerInformation { 。。。 }
}
函式名變成
public static DomainControllerInformationCollection RetrieveDomainControllerReplicationInformation(。。。)
最後的呼叫變成:
RetrieveDomainControllerInformationNS。DomainControllerInformationCollection domainControllerInformationCollection = RetrieveDomainControllerInformationNS。RetrieveDomainControllerInformation。RetrieveDomainControllerReplicationInformation(。。。)。
看到問題了沒有?大量的資訊關鍵字(Retrieve DomainController Information Collection)重複出現在名稱空間,類名、變數名甚至是方法名上。其實這些資訊只需要出現一次就好,多出來的根本無助於理解程式碼還會讓人讀得窩火。當時我看完程式碼之後滿臉黑線地跟同事打賭說寫這程式碼的仁兄必定有兩個21寸的顯示器,後來去了一看果不其然,可惜苦了我這隻有一個17寸顯示器的倒黴鬼,哈哈。
順便說一句,其實我不同意@yaocoder的看法,變數名長度對如今多數語言是無所謂的,但有一種例外,就是釋出後的瀏覽器端的Javascript。畢竟這東西是從伺服器下載的,每個位元組都是流量啊。這種情況下如果沒有條件做混淆,那麼還是儘量把名字起短一點好。
不少答案都在討論長變數名是否可取,有點兒答非所問的嫌疑。問題明明問的是“怎麼辦?”,而沒問“好不好?”。
=======================================
首先宣告,我是長變數名的擁躉,可同時也踐行單行最長120
左右
字元。(寬屏)
+++++++++++=++然後回答問題++++++++++++++++
如果你覺得變數名太長了,請檢查是否存在下面的問題:
是否在變數名或類名中使用了型別資訊
如: string nameString // 叫name就可以了。變數名中附加型別是種很不良的風格。
是否重複了上下文資訊
如: class Book
中的成員 string BookName // 叫name就可以了。白痴當不了程式設計師然後來讀程式碼。
再如:TcpConnectionBufferSize tcpConnectionBufferSize // 叫size就可以了,
只要別叫tcbs
是否承擔了過多的責任
如:serviceInstanceThatAlsoSupportCallback //其實可以分成兩個變數
=======================================
當人們在談論長變數名,推薦長變數名的時候,你得先想想原因,他們到底是要避免什麼問題、解決什麼問題?
在我看來,大都是被tcbs, dcic這種變數名虐過,但是他們應該也不會希望看到
serviceInstanceThatAlsoSupportCallback
這樣的變數名。
凡事都有個度,過尤不及。