除了背代碼,我們還能做什么?

我是法醫(yī),一只治療系前端碼猿??,與代碼對話,傾聽它們心底的呼聲,期待著大家的點(diǎn)贊??與關(guān)注?,當(dāng)然也歡迎加入前端獵手技術(shù)交流群??,文末掃碼我拉你進(jìn)群,一起交流技術(shù)以及代碼之外的一切???♀?
轉(zhuǎn)載自Duing(ID:duyi-duing)
很多初學(xué)編程的朋友,可能都會幻想著這樣一個(gè)場景——
自己化身編程大佬,像“駭客帝國” 那樣手速如飛,啪啪啪地讓屏幕下起代碼雨。

圖片源自網(wǎng)絡(luò),僅做配文展示
但問題來了,這些代碼大佬是怎么記住的?難道全都是一個(gè)字符一個(gè)字符背下來的嗎?

背代碼,真的可行嗎?
曾在知乎上看過這樣一個(gè)提問:如何看待學(xué)長背誦代碼拿人工智能國賽二等獎?
小渡一臉茫然的點(diǎn)進(jìn)去看,發(fā)現(xiàn)摘要是這樣寫的——
“我是一個(gè)大一新生,本來想著打比賽升本更容易一點(diǎn)。但當(dāng)我看到學(xué)長靠背誦代碼拿到人工智能全國總決賽二等獎的時(shí)候,我開始質(zhì)疑自己想要參加的究竟是什么比賽。
既然背代碼就可以拿獎,那為什么不直接舉辦代碼朗誦比賽,誰讀的好,誰讀的有感情拿獎呢?”
說實(shí)話,雖然程序員們一直自嘲“我們從不自己寫代碼,我們只是代碼的搬運(yùn)工”,但是如果真能把代碼一字不差的背下來,也能稱得上是大神級別的人物了。
而且在比賽的時(shí)候,要是能把代碼一字一符號的背了,還能現(xiàn)場寫出來,而且跑起來還不出錯,真的是比現(xiàn)場編還要牛。

圖片源自網(wǎng)絡(luò),僅做配文展示
所以,背代碼這個(gè)事,還是要分兩方面看。
第一,代碼不太可能都是自己寫的,工程上也推薦代碼復(fù)用。
第二,代碼一部分是可以記憶的,但不能都是背的,它是高度定制化的,根據(jù)需求調(diào)參,調(diào)整結(jié)構(gòu)都是很常見的操作,大部分有技術(shù)含量的事也在這里。
這和寫作文可不一樣,背模板肯定是過不去的。但這卻像是讀書寫文章,你讀的書多了,文章自然就脫口而出,代碼量的積累也是這樣,當(dāng)你積累了足夠的代碼,寫代碼時(shí),也能足夠的流暢,思路也會清晰很多。

除了背代碼,我們還能怎么做?
剛才,我們已經(jīng)明確了這樣一個(gè)事實(shí)——記代碼是有用的,但一開始就去死記硬背全部的代碼,對學(xué)習(xí)和工作都沒有太大幫助,反而耗費(fèi)了你的精力和時(shí)間。
那么,除了背代碼,我們還能如何記憶呢?
1、 聯(lián)想記憶法
聯(lián)想是指通過當(dāng)前所感覺到或思考的事物而想起相關(guān)的另一事物,或通過大腦所想到的一件事情而引發(fā)的另一件事情,也就是用聯(lián)想的方式利用事物之間的聯(lián)系來記憶。
記憶的一個(gè)主要功能是在相關(guān)經(jīng)驗(yàn)中建立聯(lián)系,思維中的聯(lián)想越活躍,經(jīng)驗(yàn)的聯(lián)系就越強(qiáng),因此通過聯(lián)想來加強(qiáng)記憶是一種非常常用的方法。
優(yōu)點(diǎn):如果想要在邏輯訓(xùn)練中發(fā)散思維,這倒是不錯的選擇。
缺點(diǎn):需要本人有一定想象力和邏輯思維,而且想象力還不能跑偏。當(dāng)然,你如果就是喜歡把if、else和男女衛(wèi)生間聯(lián)系起來記憶,小渡也沒什么意見。
2、 畫面記憶法
人腦天生對動畫這樣有顏色的東西感興趣,記憶速度也非???,看一次就難以忘懷,而且對照片的處理速度比文字快得多,照片上可以覆蓋的內(nèi)容可能需要數(shù)千字來說明,這也是我們常說的一圖勝萬語。
比起畫面感,文字很難刺激腦皮層,也就難以記憶。試想一下:如果把能枯燥無味的書籍用漫畫的方式展現(xiàn)出來,是不是就好記許多了?
優(yōu)點(diǎn):通過這種方法,只要記住一次,就很難再忘了。
缺點(diǎn):有趣的圖片教材非常稀少,通過這種方式記憶的話,基本上全靠自己的想象了。

圖片源自網(wǎng)絡(luò),僅做配文展示
3、 熟練記憶法
就和我們上面說的一樣,因?yàn)榇a即使你沒記熟也能通過搜索的方式打出來,所以可以先忽視記憶代碼,正常的工作學(xué)習(xí),代碼打多了自然就記住了,就算沒記住全部也會記住大概。
優(yōu)點(diǎn):不但腦袋很難忘掉,就連手也形成了機(jī)械記憶,對于代碼信手拈來,利于之后向架構(gòu)師方面發(fā)展。
缺點(diǎn):需要長時(shí)間訓(xùn)練。
4、 只記關(guān)鍵點(diǎn)
學(xué)習(xí)編程,我們不需要把所有的代碼都記住,我們只需要選擇性的記住關(guān)鍵點(diǎn)。記住有什么,我能做什么,而不是其中的細(xì)節(jié)。
舉個(gè)例子,讓你設(shè)計(jì)一個(gè)電梯調(diào)度系統(tǒng),你只需要聽說過有個(gè)東西叫電梯調(diào)度算法,以及它能實(shí)現(xiàn)電梯的有序調(diào)度就行了,而并不需要死板地記住一整套代碼,這是要具體問題具體分析的。

圖片源自網(wǎng)絡(luò),僅做配文展示
沒有人能夠記住所有的代碼,我們要學(xué)會尋找所需的代碼。當(dāng)然,多學(xué)一些總是沒有壞處,如果有額外的精力和時(shí)間,去記一些關(guān)鍵常用的代碼自然也是好的。

如何像大佬一樣炫酷的輸出代碼?
如何記憶代碼的方式也學(xué)到了,接下來,就是要像大佬一樣噼里啪啦地超級炫酷地輸出代碼了!
1、 學(xué)會“偷懶”
有經(jīng)驗(yàn)的程序員“老鳥”,會利用開發(fā)工具自帶的代碼提示和自定義代碼模板,敲前幾個(gè)前綴就刷地生成一堆代碼!
比如在WebStorm編輯器中支持LiveTemplates 功能,輸入"fori",啪的一聲就自動打出循環(huán)語句,很快?。?/span>

圖片源自網(wǎng)絡(luò),僅做配文展示
2、 偶爾“挑食”
很多編程大佬確實(shí)不用查百度,因?yàn)樗麄円话阌霉雀?、GitHub和StackOverflow。
谷歌:不用多說,可以搜到更多國際化的資源、技術(shù)知識和解決方案。
GitHub:知名開源項(xiàng)目平臺,遇到了哪個(gè)項(xiàng)目的bug,直接提個(gè)issues,通常會得到響應(yīng)和解決。
StackOverflow:國外的IT技術(shù)問答網(wǎng)站,有很多的大神。在這里,甚至很多亂七八糟的冷門問題都能得到解決,也是個(gè)交友的好地方。
有這三件套,配上各種編程語言、技術(shù)框架的官方文檔,搭配開發(fā)者手冊、Zeal、Dash、DevDocs,再加上他們?nèi)辗e月累的經(jīng)驗(yàn),足夠他們解決99.999999%的問題了,還要啥自行車?

圖片源自網(wǎng)絡(luò),僅做配文展示
3、 清晰的coding思路讓你事半功倍
首先要明確:打得快≠打得好。
有人曾經(jīng)這樣調(diào)侃:“你坐在一個(gè)程序員對面聽哈。如果這哥們鍵盤敲的啪啪響,還時(shí)不時(shí)面露微笑。別急著崇拜。很多時(shí)候可能只是正在跟,測試組/美工組/產(chǎn)品組/運(yùn)維組的美眉們聊天呢。
如果這哥們的鍵盤是有規(guī)律,有間隔的,咔噠……咔噠……咔噠,而且面色平靜。那么有可能是在拷貝&粘貼代碼。
如果這哥們眉頭緊鎖,東張西望,鍵盤隔好一會才敲一會,然又是東張西望。這才是有可能在開始編程。”
所以,用鍵盤敲擊速度來評價(jià)的,不是程序員,那是打字員,程序員真正比拼的是熟練度和coding思路。
如果你長期使用一門編程語言、或者寫重復(fù)的代碼,其實(shí)很多時(shí)候,的確不用看文檔、查百度也能夠噼里啪啦寫出來。同理,做過相關(guān)業(yè)務(wù)的項(xiàng)目,再遇到同類的項(xiàng)目,就很容易能設(shè)計(jì)一個(gè)解決方案,寫代碼也會更容易和迅速。
而大佬們能做到噼里啪啦打代碼,并不是因?yàn)樗麄兪巧裣?,一下子就能打通任督二脈,碼如泉涌。更多地是因?yàn)樗麄円呀?jīng)提前設(shè)計(jì)好了詳細(xì)的技術(shù)方案、整理出了清晰明確的接口文檔,知道怎么實(shí)現(xiàn)功能,之后再去寫代碼就相對簡單了很多,也能真正做到“碼如泉涌”。
所以學(xué)編程還是要多敲代碼、多做項(xiàng)目,培養(yǎng)好的編程習(xí)慣,學(xué)習(xí)編程思維,養(yǎng)成自然記憶而非死記硬背~

寫在最后
寫2行刪一行,寫10行刪5行,真正的大佬都是從最簡單的增刪改查一點(diǎn)點(diǎn)磨出來的,但這個(gè)過程中打下的基本功,也往往決定了日后的編程高度。
大佬尚未煉成,程序員仍需努力!
RECOMMEND
? ?
很感謝小伙伴看到最后??,如果您覺得這篇文章有幫助到您的的話不妨關(guān)注?+點(diǎn)贊??+收藏??+評論??,您的支持就是我更新的最大動力。
歡迎加入前端獵手技術(shù)交流群??,文末掃碼加我微信,我拉你進(jìn)群,一起交流技術(shù)以及代碼之外的一切???♀?
