<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          程序員的代碼行數(shù)越少越好?

          共 3509字,需瀏覽 8分鐘

           ·

          2021-11-08 14:26

          上一篇:知名國產(chǎn)論壇,涼了?。。。?/a>

          代碼行數(shù)越少越好?讀懂別人的代碼很困難?如何編寫出“完美”的代碼?每天要堅持8小時編程?......拜托,這些編程誤區(qū)程序員應(yīng)該盡早知道!

          以下為譯文:

          作為開發(fā)人員,你會聽到許多有關(guān)“代碼行數(shù)”的令人難以置信的瘋狂理論——不要相信他們!以代碼行數(shù)作為決策依據(jù)是一件非?;闹嚨氖虑?。在極少數(shù)情況下,代碼行數(shù)可能還有那么一丁點意義,在絕大數(shù)情況下,代碼行數(shù)什么都代表不了。根據(jù)代碼行數(shù)做決策就好像按照頁數(shù)評價書籍的水準(zhǔn)。

          有些人可能會認(rèn)為,應(yīng)用程序中的代碼行越少,就越容易閱讀。這句話只有部分正確,我認(rèn)為代碼可讀性的度量標(biāo)準(zhǔn)包括:

          如果減少代碼行數(shù)會影響到上面任何一條,那么就有問題。實際上,基本上減少代碼行數(shù)都會影響到上面的標(biāo)準(zhǔn),因此總會出問題。不過,如果你能夠設(shè)法滿足上述條件,那么代碼行數(shù)就是完美的,根本用不著統(tǒng)計數(shù)量。


          1、語言沒有好壞之分
          除了PHP(開個玩笑)。
          總是有人會說:

          “C比X更好,因為C的性能更好。”

          “Python比X更好,因為Python更簡潔?!?/span>

          “Haskell比X更好,因為Haskell是外星語言。”


          一言以蔽之,比較編程語言本身就是無稽之談。它們是語言,又不是口袋妖怪。
          別誤會,語言之間的確有差異,只不過“一無是處”的語言畢竟是少數(shù)(盡管有很多過時的語言)。每種語言都有其獨特的優(yōu)點,從這個角度來說,語言就好像工具箱中的工具。螺絲刀能夠勝任錘子做不到的事情,但是你會說螺絲刀比錘子好嗎?(顯然錘子更好使)。
          在談?wù)撊绾卧u估語言之前,我想先說明一點。在少數(shù)情況下,語言的選擇確實很重要,某些語言顯然無法處理某些情況。如果你編寫前端代碼,那么連選擇語言的權(quán)利都沒有。在某些特定的情況下,性能很重要,那么就不能選用X語言了,但這種情況很少見。通常,語言的選擇都是項目中最不重要的問題之一。
          以下是我認(rèn)為在選擇語言時,你應(yīng)當(dāng)考慮的核心因素(優(yōu)先級從高到低):
          還有一些無法控制的緊密聯(lián)系。如果你從事數(shù)據(jù)科學(xué)工作,那么就需要使用Python、R或Scala(也許是Java)。如果是一個業(yè)余項目,那么就隨心所欲選擇自己喜歡的。只有一條規(guī)則我覺得沒有商量的余地:如果遇到的大多數(shù)問題都無法通過StackOverflow直接解決,那么我會拒絕使用這種語言。不是說我沒有解決問題的能力,而是我覺得不值得花那么多時間。

          2、讀懂別人的代碼是一件難事

          讀懂別人的代碼是一件困難的事情。Robert C. Martin在“干凈的代碼”中談到了這一點:
          “實際上,讀代碼和寫代碼所花費的時間之比遠(yuǎn)超過10:1。在編寫新代碼的時候,我們一直在閱讀舊代碼?!璠因此,]我們的代碼應(yīng)該易于閱讀,易于編寫?!?/span>

          很長一段時間里,我一直以為自己不善于閱讀別人的代碼。隨著時間的流逝,我意識到幾乎每個程序員每天都在為閱讀別人的代碼而苦惱。
          閱讀別人的代碼就像學(xué)一門外語。即使你很熟悉某種語言,但仍然需要使用別人的不同風(fēng)格以及體系結(jié)構(gòu)。而且我們一般都會假設(shè)寫代碼的人貫徹了一致性和可靠性,但有時并非如此,這確實是一個很難克服的問題。但是我發(fā)現(xiàn)了很多有幫助性的技巧。
          閱讀別人的代碼可以極大地提高你閱讀代碼的能力。在過去的兩年中,我查看了很多Github中的PR。每讀一個PR,就會覺得閱讀別人代碼的能力又提高了一點點。Github中的PR特別具有幫助性,原因如下:

          還有一種對閱讀別人的代碼有幫助行的技巧,這種技巧更加獨特。我想到的這種技巧可以大幅減少閱讀陌生代碼庫所需的時間。在看到我想閱讀的風(fēng)格的代碼后,我首先我會打開vi,然后開始用項目中使用的風(fēng)格編寫代碼。這樣會減少對代碼的陌生感。

          即使我在Github上瀏覽隨機項目,我也會這樣做。


          3、你永遠(yuǎn)無法編寫出“完美”的代碼
          在加入團隊工作之前,有4年的時間里我這個開發(fā)人員都是“獨行狼”。在大多數(shù)時間里,我會假設(shè)每位程序員編寫的代碼都是完美的。我以為稍加努力和假以時日,我也會編寫出“完美”的代碼。
          以前,我曾經(jīng)常常為此而感到焦慮。在加入團隊后,我很快就發(fā)現(xiàn)沒人能夠編寫“完美”的代碼。但是,進入系統(tǒng)的代碼幾乎總是“完美”的,為什么會這樣呢?答案就在于代碼審查。
          我們團隊擁有非常出色的工程師。他們都是最有能力,最有信心的程序員。如果有人建議提交未經(jīng)審查的代碼,那么我們團隊中的每個成員(包括我)都會群起而攻之。即使你覺得自己是下一個比爾·蓋茨,你也會犯錯。甚至都無需上升到邏輯上的錯誤,就連錯字、漏字的問題都無法避免,這些都是你的大腦無暇顧及的問題,所以需要由別人來幫你檢查。
          努力與注重細(xì)節(jié)并樂于指摘你的代碼的人一起工作。雖然剛開始聽到批評時,你會覺得很難受,但這是持續(xù)改進的唯一方法。盡最大努力避免在代碼審查過程中產(chǎn)生抵抗情緒,也不要發(fā)表針對個人的評論。努力做到對事不對人。

          審核代碼時,如果代碼的作者做出的選擇我并不熟悉,那么我會立即通過Google查看他們的選擇是否與流行觀點不符。我并不是說流行觀點永遠(yuǎn)是對的,只不過流行觀點是默認(rèn)的選擇。如果有人決定不采納流行的觀點,那也很好啊,只不過我需要知道這是否合理。在審查代碼時,有一點至關(guān)重要:你必須了解決策背后的基本原理。另外,用“初學(xué)者的頭腦”看同樣的問題,往往可以發(fā)現(xiàn)被這個人拋諸腦后的東西。


          4、程序員的工作并不意味著每天要堅持8個小時的編程
          一般的開發(fā)人員或“偉大的”開發(fā)人員每天需要做多長時間的編程工作呢?這是一個非常普遍的問題,但是從來沒有人給出明確的答案。
          每天寫代碼的時間超過4小時的人非常少。
          不贊同這一點的人要么是個例外,要么公司應(yīng)該珍惜他們。編程是一項耗費精力的工作,需要精神高度集中。要求程序員每天寫5-8小時的代碼是不近人情的做法。在極少數(shù)情況下,為了按時完成任務(wù)或為了加班費,有人會延長工作時間,但這種情況很少見。其實我這里說的“極少數(shù)情況”的意思是幾乎沒有。如果由于公司計劃上的問題或招聘的人手不足而導(dǎo)致你加班,那么請不要容忍。
          坦白來說,每天編寫8個小時的代碼,對你和公司都沒有好處。如果你的老板有這種要求,那么只能說他目光短淺,因為從長期來看,這種高強度的工作對生產(chǎn)力和心理健康都有惡劣的影響。
          請注意,我并不是建議你每天只工作4個小時。通常,我們應(yīng)該把剩下的4小時用在如下工作上:

          除此之外,我強烈建議你在白天的工作時間里定時休息并鍛煉身體(即使只是短暫的鍛煉)。事實證明,運動對緩解精神疲勞有很大的幫助。我發(fā)現(xiàn),我在無法集中精力的時候,鍛煉特別有幫助。
          原文:https://stackoverflow.blog/2019/08/07/what-every-developer-should-learn-early-on/
          作者 | Ryland Goldstein
          譯者 | 彎月,責(zé)編 | 郭芮
          出品 | CSDN(ID:CSDNnews)


          感謝您的閱讀,也歡迎您發(fā)表關(guān)于這篇文章的任何建議,關(guān)注我,技術(shù)不迷茫!

          小編到你上高速。


              · END ·
          最后,關(guān)注公眾號互聯(lián)網(wǎng)架構(gòu)師,在后臺回復(fù):2T,可以獲取我整理的 Java 系列面試題和答案,非常齊全。


          正文結(jié)束


          推薦閱讀 ↓↓↓

          1.不認(rèn)命,從10年流水線工人,到谷歌上班的程序媛,一位湖南妹子的勵志故事

          2.如何才能成為優(yōu)秀的架構(gòu)師?

          3.從零開始搭建創(chuàng)業(yè)公司后臺技術(shù)棧

          4.程序員一般可以從什么平臺接私活?

          5.37歲程序員被裁,120天沒找到工作,無奈去小公司,結(jié)果懵了...

          6.IntelliJ IDEA 2019.3 首個最新訪問版本發(fā)布,新特性搶先看

          7.這封“領(lǐng)導(dǎo)痛批95后下屬”的郵件,句句扎心!

          8.15張圖看懂瞎忙和高效的區(qū)別!


          瀏覽 23
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青草网址| 国产内射网站 | 美女扒开腿秘 免费视频 | 黄色小视频在线看 | 欧美成人生活片一区三区 |