編程中,有哪些好的習(xí)慣一開始就值得堅(jiān)持?
嗨,小伙伴們大家好,我是沉默王二,就是那個(gè)吹自己既有顏值又有才華的家伙。今天這個(gè)話題我覺(jué)得還是值得和大家探討的,因?yàn)楹玫木幊塘?xí)慣對(duì)程序員的職業(yè)生涯真的非常重要。
記得我在學(xué)駕照的時(shí)候,遇到一哥們,之前開過(guò)車,屬于無(wú)證駕駛的那種。但是,這哥們科目二竟然掛了四次,第五次有沒(méi)有過(guò)我不知道,因?yàn)槲铱颇咳伎歼^(guò)了,那哥們還在練科目二。教練真氣的不輕,天天扯著嗓門喊:“你那個(gè)腦袋瓜子特么能不能不要鉆到車窗外面看,把車窗玻璃給我搖上去,里面難道看不到鏡子嗎?”
我在排隊(duì)等車期間真的觀察過(guò),尤其是側(cè)方停車的時(shí)候,這哥們總是有意無(wú)意把腦袋伸出窗外看,玻璃搖上去的時(shí)候都能磕到車窗上,看得我都替他捉急。教練說(shuō)這哥們之前開車的時(shí)候養(yǎng)成了這個(gè)壞習(xí)慣,現(xiàn)在想改就是改不過(guò)來(lái);報(bào)了 VIP 也沒(méi)用,最后一次看天意吧,實(shí)在是沒(méi)招了。
不是我吹牛,我科目二就考得挺順利,一次性過(guò),倒車入庫(kù)的時(shí)候感覺(jué)都要壓線了,但憑借著兩周時(shí)間養(yǎng)成的好習(xí)慣硬是過(guò)了。
那接下來(lái)我就來(lái)分享三個(gè)好習(xí)慣,自我感覺(jué)良好地認(rèn)為,值得所有的小伙伴們借鑒。
01、代碼一定要規(guī)范
任何編程語(yǔ)言都有自己的一套規(guī)范,好的規(guī)范能讓代碼更易閱讀,能讓 bug 沒(méi)有容身之處。你比如說(shuō),Java 類的命名應(yīng)該遵守以下規(guī)則:
- 必須以大寫字母開頭
- 最好是一個(gè)名詞,比如說(shuō) System
- 盡量不要省略成單詞的首字母
來(lái)看個(gè)例子:
- public class Writer {}
再比如說(shuō),方法的命名應(yīng)該遵守以下規(guī)則:
- 必須以小寫字母開頭
- 最好是一個(gè)動(dòng)詞,比如說(shuō) print()
- 可以包含多個(gè)單詞,第一個(gè)單詞的首字母小寫,其他的單詞首字母大寫,比如說(shuō) actionPerformed()
來(lái)看個(gè)例子:
- void writeBook(){}
遵守這些規(guī)則就像是在馬路上遵守交通規(guī)則一樣,否則后果不堪設(shè)想。之前給小伙伴們安利過(guò)兩個(gè) IDEA 插件,一個(gè)阿里巴巴的開發(fā)規(guī)約,一個(gè) SonarLint,它們?cè)谔岣叽a質(zhì)量上面的效果杠杠的,我自己一直在用。
還有就是阿里出品的 Java 開發(fā)手冊(cè),一定要把上面羅列的條目刻到腦子里,至少放一份在桌面上吧,活學(xué)活用。
我之前在日企的時(shí)候,公司內(nèi)部就有一份編碼規(guī)約,關(guān)于 ActionScript 方面的,詳細(xì)程度可以和阿里的開發(fā)手冊(cè)媲美,只不過(guò)沒(méi)有對(duì)外開放。好多年過(guò)去了,雖然規(guī)約上面的內(nèi)容忘得一干二凈,但它給我的印象深刻——就像初戀女友一樣,容顏早已忘卻,背影卻時(shí)不時(shí)涌上心頭(逃。
02、學(xué)會(huì)閱讀源碼
源碼是香,但我不建議新手一上來(lái)就閱讀源碼,因?yàn)楹苋菀讋裢恕>秃孟裎恼麻_頭提到的學(xué)駕照一樣,如果一開始就從科目三練起,那多半會(huì)在路上完蛋。
閱讀源碼之前,技術(shù)儲(chǔ)備一定要到位。也就是說(shuō)科目三練習(xí)之前,科目一的理論知識(shí)要過(guò)關(guān),科目二的基本技巧要掌握,如果說(shuō)方向盤都不會(huì)打,油門剎車都不會(huì)踩,檔位都不會(huì)掛,那教練不被嚇出心臟病才怪。
一旦你的技術(shù)功底達(dá)到一定程度后,想要更上一層樓,閱讀源碼就變得勢(shì)在必行了。因?yàn)殚喿x源碼有以下好處:
- 解決 bug。如果 Google、Stack Overflow 上搜不到答案,那么閱讀源碼幾乎就是唯一可行的解決辦法了。
- 知其所以然。比如說(shuō),你想知道為什么 String 類是不可變類,那就必須鉆一鉆源碼才能明白。
- 學(xué)習(xí)。為什么大牛們都會(huì)推薦 GitHub,就是因?yàn)樗厦娴捻?xiàng)目都是開源的,源代碼是可以直接閱讀的。
- 改造。很多時(shí)候,我們已經(jīng)拿到了一個(gè)輪子,但需要對(duì)它進(jìn)行一些改造才能滿足需求,那就必須在改之前閱讀源碼,否則,輪子可能會(huì)被改造成錘子。
知道閱讀源碼的好處了吧?那有小伙伴可能要問(wèn),怎么去閱讀源碼呢,有哪些技巧呢?我來(lái)分享一下自己經(jīng)驗(yàn):
- 先閱讀文檔。知道庫(kù)是干嘛的,知道類是干嘛的,知道方法是干嘛的,知道變量是干嘛的。
- 打斷點(diǎn),進(jìn)行調(diào)試。代碼之間會(huì)有很多調(diào)用關(guān)系,如果只看不動(dòng)手和源碼干一架的話,很可能不知道代碼之間是如何銜接的,通過(guò)調(diào)試就可以看清楚整個(gè)源碼之間的脈絡(luò)。
- 分享閱讀源碼后的心得。所謂好記性不如爛筆頭,寫下來(lái)可不只是為了分享自己閱讀源碼后的喜悅之情,更重要的是,當(dāng)你忘的差不多時(shí)筆記可以喚醒你的記憶。
03、獨(dú)立思考并解決問(wèn)題
我的技術(shù)交流群里有過(guò)那么一個(gè)小伙伴,一年多時(shí)間過(guò)去了,幾乎沒(méi)什么成長(zhǎng),遇到問(wèn)題就往群里群里扔,或者直接私信發(fā)給我。我發(fā)現(xiàn),現(xiàn)在問(wèn)的問(wèn)題和一年前問(wèn)的問(wèn)題真差不多,無(wú)非就是形式上發(fā)生了一些變化。
這說(shuō)明什么呢?這名小伙伴沒(méi)有學(xué)會(huì)獨(dú)立思考,沒(méi)有學(xué)會(huì)舉一反三。人最珍貴的財(cái)產(chǎn)其實(shí)不是錢,而是思考的能力,對(duì)吧?腦子是越用越靈活的,不用呢,就真的會(huì)生銹。
一旦你學(xué)會(huì)獨(dú)立思考,那么你解決問(wèn)題的能力真的是會(huì)提升一個(gè)很高的檔次——從一名合格的程序員蛻變?yōu)橐幻麅?yōu)秀的程序員的關(guān)鍵節(jié)點(diǎn)。在我上大專的兩年時(shí)間里,成長(zhǎng)真的特別慢,因?yàn)橛龅絾?wèn)題我就想著問(wèn)同學(xué)啊,問(wèn)老師啊,結(jié)果是同學(xué)和老師進(jìn)步了,我還是原來(lái)的我。
等到大三去實(shí)習(xí)后,一切就悄然改變了,領(lǐng)導(dǎo)忙得很,壓根就沒(méi)有工夫幫你解決一些雞毛蒜皮的小問(wèn)題。再者,真不好意思,不能把底褲漏給領(lǐng)導(dǎo)看啊,沒(méi)辦法,我就只能自己硬著頭皮上。
硬上的次數(shù)多了,真的發(fā)現(xiàn),原來(lái)自己不通過(guò)別人的幫助也能夠把問(wèn)題解決掉。漸漸地,隨著時(shí)間的推移,我在團(tuán)隊(duì)里面開始顯山露水了。
那怎么才能培養(yǎng)獨(dú)立思考的能力呢?按照胡適先生所說(shuō)的,就是質(zhì)疑一切,然后提出假設(shè),最后去求證。
你比如說(shuō),Java 程序員都知道 String 類是不可變的,那假如說(shuō)它是可變的呢?會(huì)是什么樣子,研究完你就會(huì)明白,原來(lái)一個(gè)不可變類是這樣設(shè)計(jì)的啊,自己也能搞個(gè)不可變類了!
04、最后
好了,我親愛(ài)的小伙伴們,這篇文章就探討到這吧,也許這些習(xí)慣你早已經(jīng)養(yǎng)成,那再好不過(guò)了,我必須要為你點(diǎn)個(gè)贊。

























