轉(zhuǎn)帖|行業(yè)資訊|編輯:我只采一朵|2017-06-20 13:53:44.000|閱讀 163 次
概述:你用Tab還是空格來(lái)處理代碼縮進(jìn)?這個(gè)問題通常會(huì)引起程序員間的”圣戰(zhàn)“,它已經(jīng)無(wú)數(shù)次引起爭(zhēng)論了。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
原作者:David Robinson
譯者:詩(shī)書塞外
你用Tab還是空格來(lái)處理代碼縮進(jìn)?
這個(gè)問題通常會(huì)引起程序員間的”圣戰(zhàn)“,它已經(jīng)無(wú)數(shù)次引起爭(zhēng)論了。我自己是用空格的,但是我從沒認(rèn)為兩種習(xí)慣之間有什么很重要的區(qū)別。但是今天我們要公布Stack Overflow 2017開發(fā)者調(diào)查得到的一部分源數(shù)據(jù),而且分析表明用空格還是用Tab真的是有所謂的!
用空格的程序員比用Tab的程序員掙錢多
有28657名職業(yè)程序員(他們不是學(xué)生也不是實(shí)習(xí)生)參與了這個(gè)”用Tab還是用空格的調(diào)查“。這之中,40.7%的程序員使用Tab,41.8%的程序員使用空格,17.5%的程序員兩者都用。其中,12426名程序員填寫了Ta的薪水。
分析這些數(shù)據(jù),我們得到一個(gè)很有趣的結(jié)論,用空格縮進(jìn)的程序員比用Tab縮進(jìn)的程序員賺的更多,即便兩者擁有相同的編程經(jīng)驗(yàn)。
從圖中可以看出,使用空格縮進(jìn)的程序員的薪資中位數(shù)是59,140美金,而使用Tab縮進(jìn)的程序員的薪資中位數(shù)是43,750美元。其他國(guó)家程序員的薪資已經(jīng)由當(dāng)?shù)刎泿艙Q算成美元了。同時(shí)使用空格和Tab的程序員薪資水平基本和使用Tab的情況差不多:在后面分析中我們會(huì)忽略這部分混用的程序員。
這個(gè)結(jié)果很令人驚訝,但是結(jié)果本身還不能說(shuō)明什么問題。當(dāng)我第一次看到這個(gè)結(jié)論的時(shí)候,我懷疑是不是某一個(gè)因素影響了結(jié)果,比如程序員所在國(guó)家或者使用的編程語(yǔ)言。比如可能人均GDP比較低的國(guó)家的程序員更喜歡用Tab,而有理由推斷這樣會(huì)拉低用Tab程序員的平均薪資。
如果原因真的如上所想,那么在國(guó)家內(nèi)部進(jìn)行統(tǒng)計(jì)應(yīng)該就不會(huì)有這個(gè)令人驚訝的結(jié)論了。所以我們選取了樣本最多的幾個(gè)國(guó)家,在國(guó)家內(nèi)部進(jìn)行統(tǒng)計(jì)。
在歐洲這個(gè)現(xiàn)象相對(duì)比較弱,而在印度這個(gè)現(xiàn)象卻相當(dāng)明顯。不過可以看到,無(wú)論在哪個(gè)國(guó)家內(nèi)部,使用空格縮進(jìn)的程序員薪資都比用Tab縮進(jìn)的程序員高,所以可以證明不是國(guó)家這個(gè)單獨(dú)的因素導(dǎo)致了這個(gè)差別。
另一方面,我們知道不同類型的程序員會(huì)有不同的習(xí)慣:比如DevOps會(huì)傾向于用空格,而移動(dòng)開發(fā)者更喜歡用Tab。這個(gè)差異主要因?yàn)樗麄兪褂玫恼Z(yǔ)言不同。這次的調(diào)查中程序員們提供了他們使用的語(yǔ)言的情況,和他們是什么類型的開發(fā)者。
從統(tǒng)計(jì)數(shù)據(jù)中看,無(wú)論是在同一語(yǔ)言內(nèi)部,還是同種開發(fā)者內(nèi)部,使用空格的程序員都比使用Tab的程序員薪資更高。
我還嘗試了很多其他的因素,比如教育水平和公司規(guī)模,得到的結(jié)果都是相似的:用空格縮進(jìn)的程序員薪資更高。我們?cè)谶@里把調(diào)查的提供出來(lái),希望統(tǒng)計(jì)學(xué)家們能夠找出導(dǎo)致這個(gè)現(xiàn)象的因素。
評(píng)估“空格 or Tab”選擇對(duì)薪資的影響
如果我們把影響薪資的所有因素都放在一起,那么“空格 or Tab”的選擇在這里占有多大的權(quán)重呢?
為了解答這個(gè)問題,我使用以下因素對(duì)工資做了一個(gè)線性回歸:
這個(gè)模型預(yù)測(cè)使用空格縮進(jìn)會(huì)使得工資相較于使用Tab縮進(jìn)高8.6%,p值10^-10的置信區(qū)間為(6%, 10.4%).(通過這個(gè)預(yù)測(cè)工資的模型,我們能夠估算每個(gè)因素對(duì)工資貢獻(xiàn)的百分比,而不是美元絕對(duì)值)。從另一個(gè)角度計(jì)算,我們得出使用空格縮進(jìn)相當(dāng)于增加了2.4年的工作經(jīng)驗(yàn)。
結(jié)論
嗯…這確實(shí)難以置信,我最開始也沒想到是這樣的結(jié)果。但是即便我嘗試了各種解釋,這個(gè)結(jié)論還是站得住腳。我甚至加入了一些調(diào)查中沒有的因素去計(jì)算,這個(gè)現(xiàn)象始終都是存在的。
這個(gè)結(jié)論并不能說(shuō)明因果關(guān)系,我始終不敢確定我已經(jīng)考慮到所有的影響因素了。如果你是一個(gè)數(shù)據(jù)科學(xué)家,統(tǒng)計(jì)學(xué)家,或者分析師,我們鼓勵(lì)你下載源數(shù)據(jù)來(lái)檢查。如果你想重現(xiàn)這次試驗(yàn)的結(jié)果,這里有這篇文章用到的。
我們很希望能聽到任何有關(guān)于這個(gè)現(xiàn)象原因的理論。
為了保住我的薪水,我決定繼續(xù)用空格縮進(jìn)….
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn