剛寫了一百萬行代碼,現(xiàn)在迷之自信!

剛開始寫代碼會(huì)覺得很有意思,等寫了一百萬行后,其中滋味自己體會(huì)吧!

搞程序的累計(jì)寫到一百萬行代碼,到底是什么體驗(yàn)?zāi)兀?/b>

如果一百萬是標(biāo)量的話,我來和大家研究一下這個(gè)數(shù)據(jù):

假設(shè)最好的情況,一天 100 行高質(zhì)量代碼,一年 36500,100 / 3.65 = 27 年多。即便從 20 歲開始編碼,要到 50 歲左右方可完成。

但實(shí)際上關(guān)于平均代碼量的問題,即便把所有工作日都算上,大概也就是 20 - 30 行的樣子;如果僅討論集中的開發(fā)期,高峰也不會(huì)超過 200 行。

一百萬代碼就像找女朋友一樣不靠譜。。。。


看完之后頭皮一陣發(fā)麻,讓我寫一百萬行的代碼?!are you kidding me?我估計(jì)寫到 20 萬的時(shí)候就會(huì)突然有個(gè)疑問----“咦?我的頭發(fā)呢?”。

針對(duì)累計(jì)寫到一百萬行代碼,看看網(wǎng)友們?cè)趺凑f:

網(wǎng)友 A

我寫兩千行代碼功能都得琢磨個(gè)兩三天,一百萬行真的是好多啊,最多了五年寫了也就 20 - 30 萬行代碼左右,還是有任務(wù)在身的情況被逼著寫的,讓我寫一百萬行代碼,恐怕這輩子得死在電腦前了...

網(wǎng)友B

我是覺得如果說你一個(gè)工作寫了一百萬行代碼,那你在公司的地位應(yīng)該算資深員工了。如果你一個(gè)項(xiàng)目寫了一百萬行,那你肯定是參與了一個(gè)比較大的項(xiàng)目了。

如果你一個(gè)類寫了一百萬行,請(qǐng)問你用的是什么編輯器?如果你一個(gè)方法寫了一百萬行代碼的話,請(qǐng)問你有沒有被同事打死?


網(wǎng)頁C

據(jù)說要從初學(xué)者成長為程序員,那個(gè)得需要 10 萬行代碼的積累才可以呢。不過話說回來這樣說也很對(duì),畢竟入門階段嘛,確實(shí)需要多打代碼才能積累經(jīng)驗(yàn)。

不過修煉一段時(shí)間之后,再注重代碼的量,那就不對(duì)了。這時(shí)候肯定是注重?cái)?shù)學(xué)還有算法思維,按這樣算的話,假如 20 萬是修煉門檻,真積累到了一百萬行代碼,肯定代碼質(zhì)量越來越高了,估計(jì)是某個(gè)領(lǐng)域的小專家也說不定。

網(wǎng)友D

切,一群渣渣。給你們看看一張網(wǎng)圖就知道我連續(xù)熬夜寫幾千行代碼是什么狀態(tài)了。我感覺我快要窒息了,如果時(shí)間可以倒流,我希望我不做程序員?。?!


當(dāng)一個(gè)項(xiàng)目里的代碼超過一百萬行……













關(guān)于代碼的量,從初學(xué)者成長為程序員,需要代碼的積累,而以后數(shù)學(xué)功底和編程思維的深化更加重要。


怎么做高質(zhì)量的代碼

打好技術(shù)基礎(chǔ)

寫出高質(zhì)量代碼,并不是搭建空中樓閣,需要有一定的基礎(chǔ)。

這里我重點(diǎn)強(qiáng)調(diào)與代碼質(zhì)量密切相關(guān)的幾點(diǎn):

掌握好開發(fā)語言,比如做 Android 就必須對(duì) Java 足夠熟悉,才能夠?qū)懗龈哔|(zhì)量 Java 代碼。

熟悉開發(fā)平臺(tái),不同的開發(fā)平臺(tái),有不同的 API,有不同的工作原理,同樣是 Java 代碼,在 PC 上寫與 Android 上寫很多地方不一樣。

要去熟悉 Android 編程的一些特性,iOS 編程的一些特性,了解清楚這些,才能寫出更加地道的代碼,充分發(fā)揮各自平臺(tái)的優(yōu)勢。

基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)與算法,掌握好這些在解決一些特定問題時(shí),可以以更加優(yōu)雅有效的方式處理。

基礎(chǔ)的設(shè)計(jì)原則,無需完全掌握 23 種經(jīng)典設(shè)計(jì)模式,只需要了解一些常用的設(shè)計(jì)原則即可,甚至你也可以只了解什么是低耦合,并在你的代碼中堅(jiān)持實(shí)踐,也能寫出很不錯(cuò)的代碼。

代碼標(biāo)準(zhǔn)

代碼標(biāo)準(zhǔn)在團(tuán)隊(duì)合作中尤為重要,誰也不希望一個(gè)項(xiàng)目中代碼風(fēng)格各異,看得讓人糟心,即便是個(gè)人開發(fā)者,現(xiàn)在也需要跟各種開源項(xiàng)目打交道。

標(biāo)準(zhǔn)怎么定是一個(gè)老生常談的話題,我經(jīng)歷過很多次的代碼標(biāo)準(zhǔn)討論會(huì)議,C++,C#,Java 等等,大家有時(shí)會(huì)堅(jiān)持自己的習(xí)慣不肯退讓??涩F(xiàn)如今時(shí)代不一樣了,Google 等大廠已經(jīng)為我們制定好了各種標(biāo)準(zhǔn),就用這些業(yè)界標(biāo)準(zhǔn)吧。

想好再寫

除非你很清楚你要怎么做,否則我不建議邊做邊想。你真的搞清楚你要解決的問題是什么了嗎?你的方案是否能有效?有沒有更優(yōu)雅簡單的方案?

準(zhǔn)備怎么設(shè)計(jì)它,必要的情況下,需要有設(shè)計(jì)文檔,復(fù)雜一些的設(shè)計(jì)需要有同行評(píng)審,寫代碼其實(shí)是很簡單的事情,前提是你得先想清楚。

代碼重構(gòu)

重構(gòu)對(duì)于代碼質(zhì)量的重要性不言而喻,很難一次把代碼寫得讓自己滿意、無可挑剔。

技術(shù)債務(wù)

很多問題歸根結(jié)底都是技術(shù)債務(wù),這在一些大公司尤為常見。技術(shù)債務(wù)話題太大,但就代碼質(zhì)量而言,我只想提一下不要因?yàn)檫@些債是前人留下的你就不去管。

現(xiàn)實(shí)是沒有多少機(jī)會(huì)讓你從一個(gè)清爽清新的項(xiàng)目開始做起,你不得不去面對(duì)這些,你也沒法完全不跟這些所謂的爛代碼打交道。

當(dāng)你負(fù)責(zé)一個(gè)小模塊時(shí),除了把它做好之外,也要順便將與之糾纏在一起的技術(shù)債務(wù)還掉,因?yàn)檫@些債務(wù)最終將是整個(gè)團(tuán)隊(duì)來共同承擔(dān),任何一個(gè)人都別想獨(dú)善其身,如果你還對(duì)高質(zhì)量代碼有追求的話。

作為團(tuán)隊(duì)的技術(shù)負(fù)責(zé)人,也要頂住壓力,鼓勵(lì)大家勇于做出嘗試,引導(dǎo)大家不斷改進(jìn)代碼質(zhì)量,不要總是畏手畏腳,停滯不前,真要背鍋也得上,要有擔(dān)當(dāng)。

代碼審查

我曾經(jīng)聽過一些較高級(jí)別的技術(shù)分享,竟然還不時(shí)聽到一些呼吁大家要做代碼審查的主題。

我以為在這個(gè)級(jí)別的技術(shù)會(huì)議上,不應(yīng)再討論代碼審查有什么好,為什么要做代碼審查之類的問題。同時(shí)我接觸過相當(dāng)多所謂國內(nèi)一線互聯(lián)網(wǎng)公司,竟有許多是不做代碼審查的,這一度讓我頗為意外。

這里也不想多談如何做好代碼審查,只是就代碼質(zhì)量這點(diǎn),不客氣地說:沒有過代碼審查的經(jīng)歷往往很難寫出高質(zhì)量的代碼,尤其是在各種追求速度的糙快猛創(chuàng)業(yè)公司。

靜態(tài)檢查

很多代碼上的問題,都可以通過一些工具來找到,某些場景下,它比人要靠譜得多,至少不會(huì)出現(xiàn)某些細(xì)節(jié)上的遺漏,同時(shí)也能有效幫助大家減少代碼審查的工作量。

Android 開發(fā)中有 Lint,F(xiàn)ind bugs,PMD 等優(yōu)秀靜態(tài)檢查工具可用,通過改進(jìn)這些工具找出的問題,就能對(duì)語法的細(xì)節(jié),規(guī)范,編程的技巧有更多直觀了解。

建議最好與持續(xù)集成(CI),代碼審查環(huán)境配套使用, 每次提交的代碼都能自動(dòng)驗(yàn)證是否通過了工具的代碼檢查,通過才允許提交。

單元測試

Android 單元測試,一直備受爭議,主要還是原生的測試框架不夠方便,每跑一次用例需要在模擬器或者真機(jī)上運(yùn)行,效率太低,也不方便在 CI 環(huán)境下自動(dòng)構(gòu)建單元測試,好在有 Robolectric,能幫我們解決部分問題。

單元測試的一個(gè)非常顯著的優(yōu)點(diǎn)是,當(dāng)你需要修改大量代碼時(shí),盡管放心修改,只需要保證單元測試用例通過即可,無需瞻前顧后。

充分自測

有一種說法:程序員最害怕的是他自己寫的代碼,尤其是準(zhǔn)備在眾人面前 show 自己的工作成果時(shí),因此在寫完代碼后,需要至少跑一遍基本的場景,一些簡單的異常流。

在把你的工作成果提交給測試或用戶前,充分自測是基本的職業(yè)素養(yǎng),不要總想著讓測試幫你找問題,隨便用幾下就 Crash 的東西,你好意思拿給別人嗎?

善用開源

并非開源的東西,質(zhì)量就高,但至少關(guān)注度較高,使用人數(shù)較多,口碑較好的開源項(xiàng)目,質(zhì)量是有一定保證的,這其中的道理很簡單。

即便存在一些問題,也可以通過提交反饋,不斷改進(jìn)。最重要的是,你自己花時(shí)間造的輪子,需要很多精力維護(hù),而充分利用開源項(xiàng)目,能幫助你節(jié)省很多時(shí)間,把精力專注在最需要你關(guān)心的問題上。

從另一個(gè)方面來說,開源項(xiàng)目中的一些知名項(xiàng)目,往往是領(lǐng)域內(nèi)的翹楚所寫,學(xué)習(xí)這些高手的代碼,能讓你了解到好的代碼應(yīng)該是怎樣的,培養(yǎng)出更靈敏的嗅覺,識(shí)別代碼中的各種味道。

1、具有1-5工作經(jīng)驗(yàn)的,面對(duì)目前流行的技術(shù)不知從何下手,需要突破技術(shù)瓶頸的可以加群。

2、在公司待久了,過得很安逸,但跳槽時(shí)面試碰壁。需要在短時(shí)間內(nèi)進(jìn)修、跳槽拿高薪的可以加群。

3、如果沒有工作經(jīng)驗(yàn),但基礎(chǔ)非常扎實(shí),對(duì)java工作機(jī)制,常用設(shè)計(jì)思想,常用java開發(fā)框架掌握熟練的,可以加群。

4、覺得自己很牛B,一般需求都能搞定。但是所學(xué)的知識(shí)點(diǎn)沒有系統(tǒng)化,很難在技術(shù)領(lǐng)域繼續(xù)突破的可以加群。

5.群號(hào)656060703【java 高級(jí)技術(shù)交流】:https://jq.qq.com/?_wv=1027&k=4EU7pU9

6.阿里Java高級(jí)大牛直播講解知識(shí)點(diǎn),分享知識(shí),上面五大專題都是各位老師多年工作經(jīng)驗(yàn)的梳理和總結(jié),帶著大家全面、科學(xué)地建立自己的技術(shù)體系和技術(shù)認(rèn)知!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,106評(píng)論 6 542
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,441評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,211評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,736評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,475評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,834評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,829評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,009評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,559評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,516評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,038評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,728評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,132評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,443評(píng)論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,249評(píng)論 3 399
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,484評(píng)論 2 379

推薦閱讀更多精彩內(nèi)容