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