<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>

          把代碼寫好是一件值得你一生追求的事情

          共 2924字,需瀏覽 6分鐘

           ·

          2016-08-27 01:27

          編程是一件很難的事情。當(dāng)然我的意思跟那篇著名的《編程是一件很難的事情》不一樣。想把代碼寫好,本來就是一件非常困難的事情。我大三的時候訓(xùn)練一個大一的老鄉(xiāng),就光是C++,長達(dá)四年后她還搞不清楚范本元編程究竟是什么。而且還有C語言學(xué)會了轉(zhuǎn)C++會把壞習(xí)慣帶進(jìn)來啦,C++的人轉(zhuǎn)做C#之后發(fā)現(xiàn)很多C++的好技巧到了C#都只會讓程序變得更慢啦,很多寫動態(tài)語言的人不理解類型的好處還在那里胡扯啦,還有C#和javascript明明放著大好的函數(shù)式風(fēng)格不用,非要把代碼寫的超長(本來光是這樣沒什么問題的,只是有某些人不肯學(xué)習(xí)新知識)。可見,就算把自己訓(xùn)練了好多年,最終進(jìn)入了工作崗位,想把代碼寫好,也是一件非常困難的事情。

          當(dāng)然有些人說,如今只有產(chǎn)品做得好才能賺錢,代碼寫的好有個屁用。這只能是人各有志,有些人就不喜歡鉆研代碼,這本來也沒什么。但是這些人老是跳出來忽悠別人,也只會讓編程變得更難。只是幸好,我的單位并不會跟某些單位一樣說一些“把代碼寫得那么好有什么用,搞的我們還非得學(xué)東西才能看你的代碼,趕緊做點(diǎn)新feature啦”的這種話,我已經(jīng)覺得很好了。

          寫得好這個東西還是比較抽象。我認(rèn)為其中一條就是代碼要好維護(hù)。我一直以為,只有代碼寫得好維護(hù),好改,清晰易懂,這樣加新的弁鄐~會容易,不出事情,順利發(fā)布軟件。后來我發(fā)現(xiàn)我錯了,騰訊不也是QQ一版一版的發(fā)嗎,原來加班也是一種方法,啊哈哈哈。如果在一個單位里面,不加班別人就會找你麻煩的話,我相信你也不會花心思把代碼寫好的,反正都要加班。

          不過對于志向就是寫代碼的那一些人,最好還是不要受到這些外來信息的干擾。最近跟我們組里的一個test manager聊天,他是一個菲律賓人,說是從紙帶時代開始就寫代碼了(不過看起來好年輕……),工作的時候還覺得C語言是一個嶄新的語言。后來他跟我說,如果一個人有志向與,代碼一條路走到黑,最好就去學(xué)習(xí)一下怎么當(dāng)architect。他說道,Architect的知識構(gòu)架是由各種pattern組成的,然后就說了自己年輕的時候的很多故事來作證這個道理。然后還講了微軟的其中一個創(chuàng)始人到現(xiàn)在還堅(jiān)持一線寫代碼的事情,不過沒告訴我是誰。

          在這之前,剛好MSR的Daan Leijen因?yàn)閬肀本﹨⒓觩rogramming language相關(guān)的conference,就來我們這里參觀了一下。后來我看他做過GUI,做過parser combinator,發(fā)明實(shí)現(xiàn)過語言,就前去搭訕,結(jié)果發(fā)現(xiàn)他讀書的時候的導(dǎo)師竟然是Erik Meijer。按照他的話說,“then we are connected”,如果說成中文,就是有緣分吧。接著就跟他討論了一些parser combinator和類型系統(tǒng)之類的東西。我說我之前也搞過這些東西,最后還貢獻(xiàn)了一部分給公司,換了個組之后還開了講座什么的。他講到他讀書的時候,也是學(xué)校沒教自己自學(xué)的這些東西,后來周圍也沒什么人做,但是并沒有讓他喪失動力。然后就說了一句話讓我印象很深刻:“原來你也做這些東西啊,我應(yīng)該可以看到為什么你要從產(chǎn)品組跳到MSRA來了。”他直到今天,頭發(fā)都基本上掉光了,還在那里繼續(xù)研究programming language的東西,還給了我?guī)灼撐摹N矣X得很好,人就該像他那樣。

          有些時候,人就得有那個信念,才能把可行但是難度大的東西,也最終搞出來。我自己寫了11年的程序,其實(shí)并沒有接觸過十分廣泛的東西,因?yàn)楹芏鄷r間都花在重寫我的一些idea上面了。譬如說編譯器就寫了五六個,GUI庫就寫了八遍,還有些雜七雜八的。不過從這個過程之中,可以明顯感覺到自己什么時候比以前更進(jìn)一步。這種signal有很多,譬如說當(dāng)你決定要添加一個比較復(fù)雜的弁遄A也可以迅速知道怎么做而不用動到構(gòu)架啦;譬如說你覺得你的代碼越來越順眼啦;譬如說你因?yàn)闃?gòu)架不行決定重寫的時候,你發(fā)現(xiàn)前一個版本的代碼可以撿起來繼續(xù)用的部分越來越多啦。

          寫到這里,我想起很多人都問過我,程序要怎么寫才能寫得好,或者說設(shè)計(jì)模式要怎么寫,之類的問題。如果把學(xué)習(xí)編程花費(fèi)的精神代價做標(biāo)準(zhǔn)的話,捷徑是沒有的。但是如果僅僅把時間作為標(biāo)準(zhǔn)的話,捷徑顯然是有的。怎樣才能加速你學(xué)習(xí)的過程呢?答案就是,先寫再看書。對于像編譯原理這種略微高深的知識,總要自己寫過幾遍,吃了一些苦頭,才能知道為什么書里非要把算法那么設(shè)計(jì)結(jié)構(gòu)那么安排。對于像設(shè)計(jì)模式這種需要大量經(jīng)驗(yàn)才可以領(lǐng)悟到的知識,如果你從來沒獨(dú)立寫過一個上萬行的程序,你覺得你能理解設(shè)計(jì)模式在講什么嗎?我覺得這種時候能做的也就是背下來,理解什么的都是扯淡。諸如此類,學(xué)習(xí)程序,如果要加速那個過程,肯定要花大量的時間寫代碼。當(dāng)你把項(xiàng)目做得越大、越復(fù)雜、算法越扭曲、界面越華麗、尺寸已經(jīng)大到你覺得不學(xué)習(xí)新的方法論就肯定會讓代碼失控的時候,這個時候你來看設(shè)計(jì)模式的書,保證是每看到一個模式都覺得人家說到你心坎里去了。那你不僅可以迅速理解,而且以后還可以不由自主的想起來使用它。

          當(dāng)然,如果你不是一個喜歡寫代碼的人,那這個方法肯定沒有用,因?yàn)橹型痉艞壥裁吹奶嗔恕_@種時候,只能怪你沒緣分,設(shè)計(jì)模式不渡你了。如果你最后撐下來了,雖然你自己覺得你也花費(fèi)了相當(dāng)?shù)呐?,但是別人反正是看不到你的努力的,就會開始覺得你有捷徑了。為什么呢?因?yàn)樾矢甙。瑫r間花得短啊。

          光寫代碼也是沒用的。同人于野一篇講成年人還能不能進(jìn)步的博客說得很好,知識分為舒適區(qū),學(xué)習(xí)區(qū)和恐慌區(qū)。舒適區(qū)的意思就是,你很容易就可以做完。學(xué)習(xí)區(qū)的意思就是,你需要花費(fèi)大量的智力才可以做完。恐慌區(qū)的意思就是,你根本不知道如何下手。當(dāng)你在為了練習(xí)編寫大量的代碼的時候,你要盡量把題目都安排在學(xué)習(xí)區(qū)這里,這樣才能讓你進(jìn)步快的同時,還不會被問題打倒,可以繼續(xù)積累成就感了。

          學(xué)生做這個最方便了,工作之后,如果剛好遇上個黑心公司要你天天加班,你反而沒時間做學(xué)習(xí)區(qū)的內(nèi)容了,公司給你的肯定是舒適區(qū)的苦力活。

          說到這里,如果你還有時間練習(xí)的話,千萬不要去想:“我每一個程序都要跨平臺”,“我只做這個語言”等等。反正將來,語言你都要會,平臺的差異你都要知道,為什么要斷送自己了解這些東西的機(jī)會呢?你真的以為不知道垃圾收集的原理,和一些底層的可以通過C++的練習(xí)而得到的的操作,你真的可以在某些關(guān)鍵時刻操縱好C#嗎?當(dāng)然有些人會覺得,我估計(jì)一輩子不會遇到這些問題的,所以我還是不管他了。人各有志嘛,C#不渡你,也是你自己的事情。如果你真的可以一輩子都在一個平臺上用一種語言做同一種程序做到退休,那真是幸福的生活啊。

          扯了那么多,也扯個小結(jié):

          1.學(xué)電腦要趁早,電腦要從娃娃抓起。
          2.把代碼寫好是一件非常困難的事情。
          3.不喜歡鉆研代碼的人不要跳出來忽悠別人。
          4.代碼寫得好其中一條就是代碼要好維護(hù)。
          5.活到老,寫到老,“把代碼寫好”可以作為一生的追求。
          6.寫出好代碼,需要有信念;碼寫百遍,其義自見。
          7.寫出好代碼,沒有捷徑;寫萬行碼,行萬里路。
          8.光寫代碼是沒用的,你需要花量大量的智力寫代碼。
          9.寫代碼不要局限于某種語言,某個平臺。要做到“萬碼皆一碼,無碼勝有碼”。

          瀏覽 148
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  亚洲欧美不卡高清在线 | 日本一级A片在线观看视频 | 91精品国产成人观看 | 伊人大香蕉超碰 | 精品视频你懂的 |