我回顧我學(xué)習(xí)Android和iOS的經(jīng)歷,發(fā)現(xiàn)那些很有價(jià)值的知識很多是我模仿習(xí)得的。
怎么模仿?開兩個(gè)項(xiàng)目。比如模仿Jack的朋友圈實(shí)現(xiàn),我看兩行他的代碼,然后在我的項(xiàng)目寫他的代碼。不懂再回去看,懂的話就按照自己的想法寫,一次性寫多點(diǎn)。
用這種方法,很深刻地記得學(xué)會了自己寫Android的下拉刷新瀑布流,iOS的手寫UI,等等。
Android的下拉刷新那次讓我第一次不用xml直接對view進(jìn)行控制,而且懂得了手勢。是一次提高。有時(shí)抄著抄著原作者的代碼就恍然大悟了。有些東西是自己看不出來的,無論怎么思考。因?yàn)榭吹臅r(shí)候忽略了不少東西,看不到重要的東西,而打著代碼,用手操作著,這樣讓人更加投入,讓人時(shí)不時(shí)去想為什么,注意到了更多細(xì)節(jié),所以最后理解那個(gè)東西。像我前一篇的視覺差效果。一開始我是不知道橫著放或豎著放背景圖片會移動的,后來仿寫著代碼注意到了不少東西,注意到了不少東西,學(xué)會了毛玻璃效果的一個(gè)制作方法。
iOS以前我是用xib很多的,手寫代碼試過幾次都放棄了,模仿朋友圈的項(xiàng)目,我簡直就像抄一樣。大部分的除了名字有時(shí)有差別完,其它都一樣。但是我還是注意到了不少手寫代碼重要的東西。像列表cell,如果高度隨著內(nèi)容變化的話,你要畫它之前先計(jì)算它的高度。傳給tableview。怎么計(jì)算高度咧?一個(gè)方法是用固定的寬度來算高度。這些在抄著代碼的時(shí)候就會注意到了。
在模仿的時(shí)候,也往往更投入一些。我看代碼,容易看著看著就想睡覺。一是因?yàn)槟X子累,二是因?yàn)檎麄€(gè)身體都是安靜的,容易進(jìn)入休息狀態(tài)。我一個(gè)朋友看代碼的時(shí)候,會記一些筆記。知乎上有人說解issue 去看代碼,熟悉項(xiàng)目。這些都挺好,總之要參與起來,不能只是看。當(dāng)然可能有些人光是看、思考就能持續(xù)很久。
模仿的時(shí)候,和自己創(chuàng)造的時(shí)候,是不一樣的,模仿要容易些,因?yàn)槭悄7?,大不了我寫一樣的代碼,照抄即可。創(chuàng)造的過程要難不少。往往模仿他人的App要容易一些,看著人家的布局,容易計(jì)算frame。模仿因?yàn)樯晕⑷菀滓恍?,所以可以持久一些。不會因?yàn)樘y而退卻。但是模仿習(xí)得的知識有時(shí)比創(chuàng)造更多。
模仿,讓試錯(cuò)更少,讓人更快掌握正確知識。學(xué)習(xí)編程,可以邊做項(xiàng)目邊查 Google。這樣的話,會試錯(cuò)很多,這個(gè)探索一下,那個(gè)探索一下,很多時(shí)候并不是很適合的方法,尤其是初學(xué)的時(shí)候。而且很多時(shí)候的試錯(cuò)是沒有意義的。有時(shí)候掌握正確的知識,知道它為什么正確就夠了。很多時(shí)候,試錯(cuò)的時(shí)候是亂試錯(cuò),比如html的格式,排版不對了,這個(gè)修改一下,那個(gè)改一下,改對了,下次又遇到一樣的問題。模仿的時(shí)候,因?yàn)檎_的答案就在別人的代碼里,可以去參考一下。正確的答案觸手可得。所以很快地掌握正確的知識。比如html的格式,我找一些html的格式的項(xiàng)目來,一行一行地照抄人家的代碼,然后邊吵邊想,可能比我自己搗鼓亂搞學(xué)得更快更好。
模仿起來!