成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

曾探:愛(ài)JavaScript再多,它也只是生活的一部分

cyqian / 1932人閱讀

摘要:拿足球比賽的例子來(lái)說(shuō),我們的目標(biāo)只是進(jìn)球,下底傳中這種模式僅僅是達(dá)到進(jìn)球目標(biāo)的一種手段。但在這種動(dòng)態(tài)解釋型語(yǔ)言中,給對(duì)象動(dòng)態(tài)添加職責(zé)是再簡(jiǎn)單不過(guò)的事情。這就造成了語(yǔ)言的裝飾者模式不再關(guān)注于給對(duì)象動(dòng)態(tài)添加職責(zé),而是關(guān)注于給函數(shù)動(dòng)態(tài)添加職責(zé)。

  

非商業(yè)轉(zhuǎn)載請(qǐng)注明作譯者、出處,并保留本文的原始鏈接:http://www.ituring.com.cn/article/199456

曾探,2007年畢業(yè)于吉林大學(xué)軟件學(xué)院,目前就職于騰訊AlloyTeam前端團(tuán)隊(duì)任高級(jí)工程師, 著有《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》一書(shū)。他曾參與WebQQ、QQ群、Q+開(kāi)發(fā)者網(wǎng)站、微云、QQ興趣部落等大型項(xiàng)目的開(kāi)發(fā)。有Java、Python和JavaScript的開(kāi)發(fā)經(jīng)驗(yàn),業(yè)余作品有HTML5街頭霸王等。平時(shí)喜歡電影和音樂(lè),業(yè)余時(shí)間是一名健身教練。

問(wèn):你是從什么時(shí)候開(kāi)始編程的?什么樣的契機(jī)讓你成為了一名前端工程師?

我是07年大學(xué)畢業(yè)之后才開(kāi)始編程。剛工作的時(shí)候做的是Java開(kāi)發(fā),當(dāng)時(shí)幾乎還沒(méi)有公司提供純粹的前端開(kāi)發(fā)職位。如果做的是web項(xiàng)目,那么在項(xiàng)目中程序員的工作都是從前端到數(shù)據(jù)庫(kù)一鍋端。

剛接觸JavaScript的時(shí)候,覺(jué)得開(kāi)發(fā)很方便,不需要搭建任何環(huán)境,新建一個(gè)記事本就可以開(kāi)擼了。第一次接觸JavaScript時(shí)用2天時(shí)間寫了個(gè)貪食蛇,在IE6上跑的很歡快,當(dāng)時(shí)覺(jué)得很神奇,也很開(kāi)心。

我09年我開(kāi)始專職做前端開(kāi)發(fā),在之前的工作還是以Java為主,有次剛好看到了一家公司招聘前端開(kāi)發(fā),就有了后來(lái)的事情。雖然現(xiàn)在偶爾還會(huì)用其他語(yǔ)言寫點(diǎn)東西,但自己本身最喜歡的語(yǔ)言還是JavaScript,這也是為什么我會(huì)從事前端開(kāi)發(fā)的原因。

至于為什么我會(huì)喜歡JavaScript,而不是別的語(yǔ)言,我倒沒(méi)有認(rèn)真從語(yǔ)法、語(yǔ)言歷史什么的角度去想過(guò)。也許就跟四月清晨遇到的百分百女孩一樣,總之你一眼就認(rèn)定是她。

問(wèn):在學(xué)習(xí)設(shè)計(jì)模式的過(guò)程中是否遇到過(guò)困難?你是如何克服的?對(duì)于正在閱讀《設(shè)計(jì)模式》和《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》的讀者,你有什么建議?

有時(shí)候我在QQ群或者論壇之類的地方聽(tīng)見(jiàn)一些新人說(shuō):“接下來(lái)1個(gè)月我要把設(shè)計(jì)模式學(xué)完。”其實(shí)設(shè)計(jì)模式這種東西很難用學(xué)完來(lái)作為衡量標(biāo)準(zhǔn)。

如果你剛成為程序員不久,其實(shí)是沒(méi)有必要刻意去學(xué)習(xí)設(shè)計(jì)模式的。如果沒(méi)有一定程度的積累,看設(shè)計(jì)模式那些東西跟背書(shū)的效果差不多,結(jié)果都是無(wú)根的浮萍。設(shè)計(jì)模式本身是從代碼中總結(jié)而來(lái)的一些設(shè)計(jì)技巧,如果沒(méi)有代碼量的積累,我們很難去真正理解這些模式。

在無(wú)數(shù)行代碼的積累之后,自然而然我們會(huì)發(fā)現(xiàn)已經(jīng)使用過(guò)一些模式,但缺少一些總結(jié),使用的方式和場(chǎng)景或許還有改進(jìn)的余地。這時(shí)候再去看一看設(shè)計(jì)模式之類的書(shū)籍或者文章,才會(huì)有一種茅塞頓開(kāi)的感覺(jué)。

《設(shè)計(jì)模式》這本書(shū)本身還是比較難懂的,這本書(shū)本身很薄,但字字珠璣,正因?yàn)槿绱?,很多重要的知識(shí)和思想可能就在1、2句看似不起眼的話中。如果是閱讀這本書(shū),建議精讀和反復(fù)讀。暫時(shí)看不懂也沒(méi)有關(guān)系,先放著過(guò)一段時(shí)間再來(lái)看,或者是工作中遇到了類似的問(wèn)題,再來(lái)翻翻這本書(shū)。

相反的是,《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》這本書(shū)寫得非常簡(jiǎn)單,從讀者的反饋來(lái)看,這也是一本容易閱讀的書(shū)。里面舉的例子并不復(fù)雜,而且大多都是跟實(shí)際開(kāi)發(fā)相關(guān)的,所以閱讀起來(lái)也會(huì)有種親切感。這本書(shū)沒(méi)有特別的閱讀建議,從第一頁(yè)開(kāi)始,或者從某一頁(yè)開(kāi)始都可以。但最靠譜的,還是從前言開(kāi)始。

問(wèn):如何正確地使用設(shè)計(jì)模式? 如何避免過(guò)度設(shè)計(jì)?

這個(gè)問(wèn)題在《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》的前言部分已經(jīng)提到過(guò)。設(shè)計(jì)模式被一些人認(rèn)為只是夸夸其談的東西,他們認(rèn)為設(shè)計(jì)模式?jīng)]有太大的用途,畢竟一個(gè)完全沒(méi)有接觸過(guò)設(shè)計(jì)模式的程序員,也許亦經(jīng)歷過(guò)許多不錯(cuò)的軟件系統(tǒng)開(kāi)發(fā)。他們覺(jué)得刻意去使用設(shè)計(jì)模式反而可能會(huì)增加程序的復(fù)雜度。

對(duì)于開(kāi)發(fā)中的一些情況來(lái)說(shuō),我們也許在一些特定的場(chǎng)景里,一眼就能看出來(lái)使用什么模式。另外一些模式則是在代碼重構(gòu)的時(shí)候才加上的。

我們不必去糾結(jié)一開(kāi)始就應(yīng)該使用什么模式,在首先完成功能需求的前提下,如果使用某種模式會(huì)在將來(lái)的項(xiàng)目維護(hù)階段為我們帶來(lái)好處,則可以用這些模式來(lái)重構(gòu)代碼。如果以前的代碼就完成了需求,而且在維護(hù)階段不會(huì)帶來(lái)大的變化,那我們就沒(méi)有必要非得往模式上面套。

如果要避免在程序中造成過(guò)度設(shè)計(jì),首先得熟悉這些模式的用途和場(chǎng)景。

有時(shí)候我們將一些模式用在了錯(cuò)誤的場(chǎng)景中,或者說(shuō)在不該使用模式的地方刻意使用模式。特別是初學(xué)者在剛學(xué)會(huì)使用一個(gè)模式時(shí),恨不得把所有的代碼都用這個(gè)模式來(lái)實(shí)現(xiàn)。錘子理論在這里體現(xiàn)得很明顯:當(dāng)我們有了一把錘子,看什么都是釘子。拿足球比賽的例子來(lái)說(shuō),我們的目標(biāo)只是進(jìn)球,“下底傳中”這種“模式”僅僅是達(dá)到進(jìn)球目標(biāo)的一種手段。當(dāng)我們面臨密集防守時(shí),下底傳中或許是一種好的選擇;但如果我們的球員獲得了一個(gè)直接面對(duì)對(duì)方守門員的單刀機(jī)會(huì),那么是否還要把球先傳向邊路隊(duì)友,再由邊路隊(duì)友來(lái)一個(gè)邊路傳中呢?答案是顯而易見(jiàn)的,模式應(yīng)該用在正確的地方。而哪些才算正確的地方,只有在我們深刻理解了模式的意圖之后,再結(jié)合項(xiàng)目的實(shí)際場(chǎng)景才會(huì)知道。

問(wèn):JavaScript設(shè)計(jì)模式和其他語(yǔ)言設(shè)計(jì)模式的主要區(qū)別是什么?

關(guān)于設(shè)計(jì)模式的大多數(shù)討論都是源自C++,Java這些靜態(tài)類型語(yǔ)言,而JavaScript是一門動(dòng)態(tài)類型語(yǔ)言。許多設(shè)計(jì)模式就是為了解開(kāi)對(duì)象之間的類型耦合而生的,而作為動(dòng)態(tài)類型語(yǔ)言的JavaScript沒(méi)有這種困擾,這說(shuō)明JavaScript語(yǔ)言中的設(shè)計(jì)模式和其他語(yǔ)言是非常不同的,從結(jié)構(gòu)上已經(jīng)沒(méi)有什么可借鑒的東西了,能夠借鑒的只有思想和解決問(wèn)題的場(chǎng)景。

人類飛上天空需要借助飛機(jī)等工具,而鳥(niǎo)兒天生就有翅膀。在Dota游戲里,牛頭人的人生目標(biāo)是買一把跳刀(跳刀可以使用跳躍技能),而敵法師天生就有跳躍技能。因?yàn)檎Z(yǔ)言的不同,一些設(shè)計(jì)模式在另外一些語(yǔ)言中的實(shí)現(xiàn)也許跟我們?cè)凇对O(shè)計(jì)模式》一書(shū)中看到的大相徑庭,這一點(diǎn)也不令人意外。

Google的研究總監(jiān)Peter Norvig早在1996年一篇名為“動(dòng)態(tài)語(yǔ)言設(shè)計(jì)模式”的演講中,就指出了GoF所提出的23種設(shè)計(jì)模式,其中有16種在Lisp語(yǔ)言中已經(jīng)是天然的實(shí)現(xiàn)。比如,Command模式在Java中需要一個(gè)命令類,一個(gè)接收者類,一個(gè)調(diào)用者類。Command模式把運(yùn)算塊封裝在命令對(duì)象的方法內(nèi),成為該對(duì)象的行為,并把命令對(duì)象四處傳遞。但在Lisp或者JavaScript這些把函數(shù)當(dāng)作一等對(duì)象的語(yǔ)言中,函數(shù)便能封裝運(yùn)算塊,并且函數(shù)可以被當(dāng)成對(duì)象一樣四處傳遞,這樣一來(lái),命令模式在Lisp或者JavaScript中就成為了一種隱形的模式。

在Java這種靜態(tài)編譯型語(yǔ)言中,無(wú)法動(dòng)態(tài)地給已存在的對(duì)象添加職責(zé),所以一般通過(guò)包裝類的方式來(lái)實(shí)現(xiàn)裝飾者模式。但在JavaScript這種動(dòng)態(tài)解釋型語(yǔ)言中,給對(duì)象動(dòng)態(tài)添加職責(zé)是再簡(jiǎn)單不過(guò)的事情。這就造成了JavaScript語(yǔ)言的裝飾者模式不再關(guān)注于給對(duì)象動(dòng)態(tài)添加職責(zé),而是關(guān)注于給函數(shù)動(dòng)態(tài)添加職責(zé)。

問(wèn):JavaScript有很多框架和庫(kù),對(duì)于初級(jí)學(xué)習(xí)者來(lái)說(shuō),怎么能在這些資源中選擇適合自己的來(lái)創(chuàng)建個(gè)人技術(shù)棧?

相比于其他語(yǔ)言的開(kāi)發(fā)者,JavaScript程序員確實(shí)會(huì)顯得比較“辛苦”。前端框架和庫(kù)的發(fā)展太快了,好像jQuery的流行還是昨天的事情,今天又涌現(xiàn)了Backbone、Angular、React這些框架。對(duì)初學(xué)者來(lái)說(shuō),很容易讓人迷茫,不知道學(xué)習(xí)哪個(gè)框架。我的建議是,優(yōu)先根據(jù)項(xiàng)目需求選擇,如果你接手的項(xiàng)目正在使用Angular.js,那就是學(xué)習(xí)Angular.js的好機(jī)會(huì)。

如果還有一些業(yè)余時(shí)間,可以選擇一些最流行的框架來(lái)學(xué)習(xí),它們之所以能夠在浩瀚的框架海洋中脫穎而出,肯定是有它們的優(yōu)點(diǎn)的。比如我們找準(zhǔn)了Angular.js來(lái)學(xué)習(xí),可以先用Angular.js來(lái)做幾個(gè)demo頁(yè)面,然后想辦法在一個(gè)合適的項(xiàng)目中使用。熟悉語(yǔ)法之后可以閱讀它的源代碼,如果有時(shí)間和精力,可以模仿它寫一個(gè)類似的框架,在這個(gè)過(guò)程之后,或許你還可以對(duì)它加以改進(jìn)。

問(wèn):AlloyTeam現(xiàn)在有多少人?由什么樣的工程師組成?

AlloyTeam目前有50多人,團(tuán)隊(duì)既有94后的小鮮肉,也有70后的大叔,女前端工程師則既有美麗師姐、也有全民?;?,還有萌妹子。大家的技術(shù)從Web前端、后端到客戶端,端端精通,既有對(duì)基礎(chǔ)框架有研究的同學(xué),也有對(duì)計(jì)算機(jī)圖形處理感興趣的同學(xué),既有喜歡做工具的,也有喜歡做游戲的,技術(shù)專長(zhǎng)可謂兼容并包。

問(wèn):AlloyTeam的名字從何而來(lái)?你們團(tuán)隊(duì)的主要工作內(nèi)容是什么?

我們團(tuán)隊(duì)的代號(hào)叫AlloyTeam,很多人很好奇騰訊AlloyTeam名字的含義和由來(lái),其實(shí)這里還真有一段小歷史。2008那年我們團(tuán)隊(duì)開(kāi)始研發(fā)WebQQ,WebQQ是業(yè)界首個(gè)將WebOS、云計(jì)算、AppStore和Web開(kāi)放平臺(tái)整合在一起的產(chǎn)品,所以我們就給WebQQ起了一個(gè)開(kāi)發(fā)代號(hào)——AlloyOS。Alloy是合金、合鑄、合成、聚合的意思,正好寓意我們的WebQQ是將公司內(nèi)、外的各種互聯(lián)網(wǎng)服務(wù)產(chǎn)品合鑄成一個(gè)為用戶提供一站式的在線生活的WebOS平臺(tái)。所以我們的團(tuán)隊(duì)也就自然成了AlloyTeam,同時(shí)AlloyTeam這名字還有一個(gè)寓意:就是將不同成員的聰明才智,以及不同技術(shù)聚合在一起,以產(chǎn)生更強(qiáng)的合金特性,從而成為堅(jiān)不可摧的團(tuán)隊(duì)。

目前我們團(tuán)隊(duì)主要負(fù)責(zé)手機(jī)QQ中的移動(dòng)Web業(yè)務(wù)以及Hybrid App的開(kāi)發(fā)工作,比如:興趣部落、QQ群等等。除了日常業(yè)務(wù)開(kāi)發(fā)之外,也鼓勵(lì)大家做一些各個(gè)方面的自由開(kāi)源項(xiàng)目,不管是可以提高大家工作效率的開(kāi)發(fā)工具,還是能對(duì)業(yè)界產(chǎn)生影響力的開(kāi)源項(xiàng)目,小到組件,大到游戲,我們都非常支持大家去做。團(tuán)隊(duì)內(nèi)部非常平等和自由,也鼓勵(lì)大家分享、布道、寫書(shū)。另外,AlloyTeam也隨時(shí)歡迎優(yōu)秀的Web前端小伙伴加入。

問(wèn):如今,移動(dòng)互聯(lián)網(wǎng)已經(jīng)變得越來(lái)越重要,在這種情況下前端工程師會(huì)面臨什么樣的機(jī)會(huì)和挑戰(zhàn)?

的確是這樣,就我個(gè)人而言,除了上班時(shí)間已經(jīng)很少打開(kāi)電腦了。原先用PC能做的事情,現(xiàn)在手機(jī)幾乎全部可以完成,可以預(yù)見(jiàn)這個(gè)趨勢(shì)在將來(lái)還會(huì)更加明顯。在這種情況下,原先在PC上開(kāi)發(fā)的前端工程師很多都轉(zhuǎn)向了移動(dòng)web開(kāi)發(fā)。包括AlloyTeam也是這樣,現(xiàn)在絕大部分時(shí)間都在做移動(dòng)端開(kāi)發(fā)。對(duì)于前端工程師來(lái)說(shuō),可能要學(xué)習(xí)一些新的知識(shí),這不是壞事,也不難,程序員應(yīng)該保持學(xué)習(xí)的心態(tài)。不管是PC開(kāi)發(fā)還是移動(dòng)開(kāi)發(fā),我們都在用相同的方式來(lái)改變?nèi)藗兊纳睢?/p>

問(wèn):程序員給人的印象通常都是不善交際、不善運(yùn)動(dòng),生活習(xí)慣不規(guī)律,這些習(xí)慣也潛移默化地影響著程序員群體的健康。你在業(yè)余時(shí)間是一位健身教練,請(qǐng)問(wèn)運(yùn)動(dòng)帶給你的好處都有哪些?

我認(rèn)識(shí)許多非常有才的程序員,程序員是一個(gè)相當(dāng)聰明的群體,聰明的人能做好許多事情,而不是僅僅寫代碼。不過(guò)也許大部分人都把太多重心放在了工作上面,這是好事,但也不全是好事。程序員的職業(yè)特點(diǎn)注定對(duì)健康的損害比較大,從25歲開(kāi)始人的器官開(kāi)始不可逆轉(zhuǎn)的老化之后,久坐和不運(yùn)動(dòng)帶來(lái)的危害更大。所以程序員更要有意識(shí)地多運(yùn)動(dòng),至少運(yùn)動(dòng)會(huì)給你一個(gè)跳動(dòng)更強(qiáng)烈的心臟,可以背女朋友越過(guò)某個(gè)路上的小水溝。當(dāng)然,加班趕項(xiàng)目的時(shí)候也比別人抗得久。

問(wèn):請(qǐng)問(wèn)對(duì)于程序員來(lái)說(shuō),工作和運(yùn)動(dòng)是否有可以兼顧?對(duì)于想要積極鍛煉的程序員來(lái)說(shuō),你有哪些建議?

IT行業(yè)基本上只能在大城市生活和工作。大城市的房?jī)r(jià)物價(jià)注定我們工作得努力和辛苦。這種情況下,許多人完全把太多精力放在了工作上面,而忽略了生活本身。工作本該只是生活的一部分,也許我們應(yīng)該有一個(gè)更加平和的心態(tài),努力工作和享受生活并不矛盾。在業(yè)余時(shí)間有一些自己的愛(ài)好,或是找一點(diǎn)適合自己的運(yùn)動(dòng),不光是為了更好的工作,還因?yàn)檫@些愛(ài)好本身也是生活的另一部分。

對(duì)于開(kāi)始有意識(shí)開(kāi)始鍛煉的程序員,這是一個(gè)很好的起點(diǎn)。不過(guò)現(xiàn)實(shí)中的大部分人情況都是三天打魚(yú)兩天曬網(wǎng)。如果真想通過(guò)運(yùn)動(dòng)來(lái)改善體質(zhì)或者豐富業(yè)余生活,首先一定要保證自己能堅(jiān)持下來(lái)。很多人剛開(kāi)始鍛煉的時(shí)候非常有激情,一段時(shí)間后就被自己以各種理由說(shuō)服放棄了鍛煉,比如要加班,有約會(huì),感冒了,有聚餐各種各樣的原因。這些事情肯定是會(huì)遇到的,但不管怎樣,一周抽出5個(gè)小時(shí)來(lái)鍛煉身體其實(shí)肯定是沒(méi)問(wèn)題的。

其次,不管什么運(yùn)動(dòng)都是一門科學(xué)。拿健身來(lái)講,首先要搞清楚身體跟新陳代謝有關(guān)的基本知識(shí),搞清楚動(dòng)作標(biāo)準(zhǔn),這樣才會(huì)有效果而且不容易弄傷關(guān)節(jié)和肌肉。如果有條件的話,可以去健身房里面請(qǐng)一個(gè)專業(yè)教練,有教練和沒(méi)有教練的區(qū)別太大了。相信堅(jiān)持一段時(shí)間后,都能看到自己形貌和精神的改變,直到健身成為一種習(xí)慣。

更多精彩,加入圖靈訪談微信!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/85824.html

相關(guān)文章

  • JS策略模式《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》閱讀筆記

    摘要:策略模式可以避免代碼中的多重判斷條件。策略模式在程序中或多或少的增加了策略類。此文僅記錄本人閱讀設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐這個(gè)本時(shí)的感受,感謝作者曾探寫出這么好的一本書(shū)。設(shè)計(jì)模式中很重要的一點(diǎn)就是將不變和變分離出來(lái)。參考設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐曾探 策略模式的定義是:定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且是它們可以相互替換。 策略模式可以避免代碼中的多重判斷條件。 策略模式很好的體現(xiàn)了開(kāi)放-...

    Amos 評(píng)論0 收藏0
  • Python 詞云分析周杰倫《晴天》

    摘要:詞云可以通過(guò)網(wǎng)站紐扣詞云來(lái)制作,然而可以通過(guò)代碼來(lái)實(shí)現(xiàn),下面開(kāi)始吧。 詞云可以通過(guò)網(wǎng)站 https://wordart.com/ 紐扣詞云http://cloud.niucodata.com/ 來(lái)制作,然而 Python 可以通過(guò)代碼來(lái)實(shí)現(xiàn),下面開(kāi)始吧。 showImg(https://segmentfault.com/img/bVQzIx?w=874&h=416); pip inst...

    DoINsiSt 評(píng)論0 收藏0
  • 2016年總結(jié) - 收藏集 - 掘金

    摘要:然而這次的文章,就像賀師俊所說(shuō)的這篇文章是從程序員這個(gè)老年度總結(jié)前端掘金年對(duì)我來(lái)說(shuō),是重要的一年。博客導(dǎo)讀總結(jié)個(gè)人感悟掘金此文著筆之時(shí),已經(jīng)在眼前了。今天,我就來(lái)整理一篇,我個(gè)人認(rèn)為的年對(duì)開(kāi)發(fā)有年終總結(jié)掘金又到 2016 Top 10 Android Library - 掘金 過(guò)去的 2016 年,開(kāi)源社區(qū)異?;钴S,很多個(gè)人與公司爭(zhēng)相開(kāi)源自己的項(xiàng)目,讓人眼花繚亂,然而有些項(xiàng)目只是曇花一...

    DataPipeline 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<