自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

挨踢部落故事匯(26):全棧攻城獅之葵花寶典

原創(chuàng)
移動開發(fā)
曾在移動、前端、后臺都有涉獵的小星星,不說十八般武藝樣樣精通,也是熟知通曉,運用自如。而今回顧他的IT坑,將成長的經(jīng)驗分享給大家。從JS到Java再到PHP,面向全棧的攻城獅已經(jīng)上線。

【51CTO.com原創(chuàng)稿件】曾在移動、前端、后臺都有涉獵的小星星,不說十八般武藝樣樣精通,也是熟知通曉,運用自如。而今回顧他的IT坑,將成長的經(jīng)驗分享給大家。從JS到Java再到PHP,面向全棧的攻城獅已經(jīng)上線。

[[200696]]

小星星·PHP

小星星的入門語言是AS,沒錯,就是Flash腳本語言。從偏門闖入了這浩大的IT世界,于是他會了JavaScript 、HTML、CSS、C/C++、Java、PHP等語言。Flash追求美觀和諧,它總能給人一種美的享受,于是“愛美”的這種習(xí)慣一直保持,以至于后來對于其他語言的學(xué)習(xí)都會各種糾結(jié)與格式化,慢慢練就了潔癖的本領(lǐng)。沒錯,就是潔癖!

萌芽意識

初識ActionScript,是為了滿足Flash場景中一個交互按鈕的響應(yīng)。為了加上onclick這個事件,小星星記得那時候足足花了半年的時間(自嘲下,那時候就是那么地,艱苦?。?,在看到提示信息出現(xiàn)的那一刻,整個人幾乎激動到跳起來,這是多么的來之不易。自此他意識到了“對象”的概念,即真實存在的物體,或者稱之為Object。

有了對象,就可以把很多重復(fù)的圖層元素歸并到一起,很多場景操作就好辦了,具體操作方式就是在時間軸上抽象出各種組件,通過組件組織成各種場景,抽象的最大好處就是可以復(fù)用,降低場景上下文之間的耦合,這樣也使作品有更好的可維護性。

自我掙扎中成長-發(fā)現(xiàn)瑕疵

小星星接觸了JavaScript 之后,發(fā)現(xiàn)語法上它跟AS驚人地相似,不奇怪,后來了解到它們的核心都是ecmascript,也罷,入門JavaScript 幾乎沒花什么力氣。在借助AS拿下JS常用的半邊江山之后,發(fā)現(xiàn)某些功能的某些寫法實在是冗余,或者說不夠干脆。比如:

  1. var hasContent; 
  2.  
  3. if(arr.length > 0){ 
  4.  
  5.     hasContent = true
  6.  
  7. }else
  8.  
  9.     hasContent = false
  10.  

其實可以很簡單的一個句子處理好: var hasContent = arr.length > 0;  當(dāng)然如果要嚴(yán)謹(jǐn)一點,這里還有一個定時炸彈,即arr這個變量為null的時候會報錯無法繼續(xù),所以完善點應(yīng)該是:

var hasContent = arr != null && arr.length > 0;

上面這種是很簡單的一個變量判斷與賦值,完全可以寫得很簡潔。另外是變量與方法命名,有些人喜歡駝峰法命名,有些人喜歡小寫字母加下劃線,這些都沒問題,統(tǒng)一的寫法看起來會讓人感覺很舒服,但往往有一些看起來就狠抓狂了,比如上面這個例子用他們的寫法:

  1. var a; 
  2.  
  3. if(b.length > 0){ 
  4.  
  5.     a = true
  6.  
  7. }else
  8.  
  9.     a = false
  10.  

這種代碼的可讀性可以說非常地差,每看一行幾乎都是用猜的,上面這個還比較容易猜,如果篇幅再大一點,那看的人就會感覺要吐血。

所以,一段代碼或者一個程序,從編碼角度來講是馬是騾,看它是否整潔是否好理解就一清二楚,當(dāng)然健壯性也很重要,總不能它跑著跑著就異常掛了吧。于是乎,只要接納第三方代碼進入小星星的作品,他都會對代碼進行整改,讓它變得跟自己的原有邏輯不那么格格不入,當(dāng)然作者還是署名原作者。這么下來也可以說練就了自己的一雙火眼金睛,別人的代碼哪里可能有問題一看就清楚,也算是自我糾結(jié)的成果吧。寫好代碼,為自己方便,也為他人方便。

歸零與記錄

 

跨過第一個門檻之后,編碼之路會順暢很多,基本上就不用糾結(jié)語法層面的東西。取而代之的更多的是去思考要完成一個功能該怎么去組織代碼結(jié)構(gòu),怎么樣做會比較高效和健壯。比如封裝,比如分包,比如抽象公共接口,這些都需要有足夠編碼經(jīng)驗作為支撐。小星星個人的話,因為平時都趨于追求完美,各種覺得好的情況都會嘗試,于是有了下面的這個作品,算是他個人從事Java留下的痕跡吧。

工具包

各個Java項目積累下來的工具包

是的,這時候追求跨平臺,即Android有的東西都想在PC實現(xiàn)一遍,或者PC有的東西都想在Android實現(xiàn)一遍,這就是糾結(jié),燒腦!好處是在其他編碼工作上遇到一些兼容性問題會考慮得比較周全。

這里面就有個有關(guān)圖像識別的東西,當(dāng)初好像是因為一個依賴庫版本的問題(它,默默地升級了),搞得好好的代碼硬是編譯不下去,各種嘗試之后無絲毫進展。在一籌莫展的時候,小星星翻爛了的度娘在一個非常不起眼的角落給了條信息“xxxxx最新發(fā)布版本為v2.4.0”,心如死灰的他重新燃起了希望,馬上折騰開來。果然,升級了依賴庫之后一切都回歸正常,這是個巨大無比的坑,絕對是!當(dāng)時已是午夜,為了銘記,決定將這坑記錄下來,于是結(jié)識了ddJava(譯為:頂頂Java),壇主為“大猩猩”,當(dāng)時這是個全新的論壇,幾乎撿了個沙發(fā),哈哈,在此感謝猩猩!

論壇發(fā)帖記錄問題,同時也是個回顧的過程,這期間不無可能會發(fā)現(xiàn)新的問題新的解決問題的方案,從某種程度上來講,這也是一種學(xué)習(xí)的過程。解決了問題,再回過頭來看,可能會發(fā)現(xiàn)更好的解決方案!

編譯問題解決了,又遇上了另一個問題。當(dāng)時的匹配算法比較糾結(jié),只能針對指定區(qū)域進行匹配。指定區(qū)域就是要確定坐標(biāo),做法是匹配傳參時,將坐標(biāo)也一起傳過去。小星星這樣想也就這樣做了,大半夜地在調(diào)試,當(dāng)完成時他跟公司大牛人物提了這事,結(jié)果對方來了句:為啥你的坐標(biāo)不放在圖片文件名里!匹配時直接解析文件名,這不是更方便?小星星恍然大悟,確實大神級就是不一樣,他們往往能抓住問題的關(guān)鍵點,可以很犀利地處理好問題。這是學(xué)習(xí)的另一種方式,跟大神交流,分享自己所知,讓大神指出改進優(yōu)化的地方。

逆向思考

當(dāng)對功能代碼已經(jīng)輕車熟路的時候,你會發(fā)現(xiàn)眼前的小問題本不是問題,但無數(shù)個小問題放一起形成的大問題卻很難去逾越。這就是成長過程中的另一個坎。技能方面已經(jīng)能駕馭語言的情況下,剩下要思考的更多的問題是系統(tǒng)性能和業(yè)務(wù)邏輯,就是自己的代碼如何完美地配合去完成一個既定業(yè)務(wù),又不影響到系統(tǒng)的可維護性和穩(wěn)定性以及運行效率,可能方法一可行,方法二也可以,方法三也湊合。這時候就需要從思維上上升一個高度,跳出來,從頂層往下看,從需求引導(dǎo)自己的編碼。

比如產(chǎn)品需要在某個列表中添加一個搜索選項,而這個選項涉及另外一個或者幾個千萬級大表(MySQL,是的目前來說它還是非常受歡迎的)。從語法層面,這個問題非常簡單,做法是直接連表查詢,條件中加入新的過濾條件,這種做法能夠?qū)崿F(xiàn)產(chǎn)品的需求,但帶來的問題是使用系統(tǒng)的人會因為慢而抓狂!問題在于大表連表查詢,這很消耗數(shù)據(jù)庫的性能。用戶需要這功能但TA不會接受由此帶來的慢,所以方法一不可行。

方法二有?嗯,毋庸置疑肯定是有的!既然是大表跨表檢索影響效率,那就不讓它跨表。做法是將目標(biāo)條件先在其所在的驅(qū)動表先過濾一遍獲取目標(biāo)值,再用這個中間的值去主表里過濾查詢。相信這個方法也不難,但在數(shù)據(jù)量上去以后這種做法絕對會比直接連表快上好幾倍。

方法三?是的,從更高階的層面去思考。最徹底的做法是從關(guān)系表的設(shè)計出發(fā),從根源上盡可能地避免大表的連表查詢(嗯,這個還未實際嘗試過,事實上它是可行的,也見過某些骨灰級的任務(wù)這么做),另外還可以借助服務(wù)器的強大的計算能力,將目標(biāo)數(shù)據(jù)讀入內(nèi)存在內(nèi)存中進行條件檢索,相信這種做法對于多個大表檢索的性能會有指數(shù)級的提升。

【寫在最后】

步入IT遇到了無數(shù)的坑,但“較真兒”精神,讓小星星逐一攻破每一道關(guān)卡,也從當(dāng)初的旁門小白向全棧發(fā)展,無論是移動、PC,還是前端、后臺,還是開發(fā)、運維,小星星堅持了,鉆研了,每項任務(wù)都竭盡全力去尋找最優(yōu)解決方案。多想、多交流,你會發(fā)現(xiàn)離全棧并不遙遠(yuǎn)!

如果你也愿意分享你的故事,請加51CTO開發(fā)者QQ交流群 542270018聯(lián)系群主小官,期待你精彩的故事!

 

51CTO開發(fā)者交流群③群 542270018

【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】

責(zé)任編輯:何星 來源: 51CTO
相關(guān)推薦

2017-01-16 17:24:08

開發(fā)者故事

2017-12-22 09:33:14

開發(fā)者故事

2017-01-18 16:37:43

開發(fā)者故事

2016-12-30 16:43:53

開發(fā)者故事

2017-03-21 11:19:57

開發(fā)者故事

2017-11-28 14:15:38

開發(fā)者故事

2017-08-04 13:15:59

開發(fā)者故事

2017-01-10 14:59:03

開發(fā)者故事

2017-09-15 11:39:47

2017-01-11 17:25:23

開發(fā)者故事

2017-03-01 15:57:48

開發(fā)者故事

2017-07-06 14:59:27

2017-01-19 13:40:56

開發(fā)者故事

2017-03-10 11:32:49

開發(fā)者故事

2017-01-18 11:07:20

開發(fā)者故事

2017-01-05 15:30:59

開發(fā)者故事

2017-04-21 15:50:52

開發(fā)者故事

2017-10-23 13:15:51

2017-04-25 15:39:30

開發(fā)者故事

2018-07-04 17:42:58

開發(fā)者故事
點贊
收藏

51CTO技術(shù)棧公眾號