最近一直在做一些代碼移植的工作舒裤,先是把一個(gè)ARM平臺Demo中的部分功能移植到MSP430FR5529上,后來又做了一些Android代碼的移植觉吭。結(jié)合我自己的工作經(jīng)歷腾供,談?wù)劯邢搿????????)
我記得本科時(shí)候有一門課叫做《智能終端應(yīng)用》,主要是講Android平臺APP開發(fā)的鲜滩,應(yīng)該算是本科期間對我影響比較大的一門課吧(?????)伴鳖。有次上課老師說過這么一句話,其實(shí)大家寫代碼都是抄來抄去的徙硅,你們現(xiàn)在讀書的時(shí)候是這樣榜聂,以后工作也是這樣,我對你們的要求就是闷游,給你一個(gè)開源的APP(我記得當(dāng)時(shí)老師打開了一個(gè)Google的什么網(wǎng)站峻汉,上面都是開源的APP),不要求你全部看懂脐往,但是你能夠按照要求完成移植,做出想要的結(jié)果扳埂,能做到這個(gè)就可以了业簿。?(?ˊ??ˋ)?666?
對此我深表贊同,無論是語言阳懂、環(huán)境或者IDE等等梅尤,甚至于計(jì)算機(jī)這個(gè)東西柜思,我們使用它的最重要的目的就是解決問題,提高效率(當(dāng)然打游戲什么的又是另外一回事)巷燥。所以如果有什么需要我就去學(xué)相關(guān)的東西赡盘,學(xué)的目的就是為了解決問題,而移植就是一種學(xué)習(xí)的途徑缰揪,這個(gè)和抄作文不一樣陨享,這是開源精神的體現(xiàn)(:逃
好吧,好像寫的有點(diǎn)多了〣( oΔo )〣
歸納一下钝腺,移植過程中一些注意點(diǎn):
1.首先你得明白客戶需求抛姑,你得明確你要做出什么樣的功能。一般來說一個(gè)Demo里面都會包含很多功能艳狐,不建議一次性移植所有功能定硝,要一個(gè)一個(gè)來,先把最核心的功能移植過來毫目,然后再慢慢優(yōu)化蔬啡,添加一些其他的功能。在添加的過程中你甚至可能會改動原Demo的代碼架構(gòu)镀虐,寫出適合你的代碼架構(gòu)星爪,當(dāng)然這些是后話了。
2.明確需求以后粉私,你要去想一下該怎么整(“整”這個(gè)詞是從學(xué)長那里學(xué)的顽腾,感覺很拽(?∩_∩)),這是很重要的诺核。你要去想一個(gè)可行的做法抄肖,包括該學(xué)哪些新的東西。
3.這是對2的一個(gè)補(bǔ)充窖杀,你需要對Demo有一個(gè)Overview漓摩,知道這個(gè)工程的框架,哪塊代碼分別是做什么的入客,然后再挑你覺得重要的代碼進(jìn)行細(xì)讀管毙。
4.移植的過程中非常容易出現(xiàn)走彎路的情況,這會耗費(fèi)大量的時(shí)間與精力卻收效甚微桌硫。不過哪怕走了彎路也不要害怕夭咬,及時(shí)糾正過來就好。我覺得移植的過程中很容易犯的一個(gè)錯誤就是急用求成铆隘,想一口吃掉卓舵,這樣反而效果不好。
寫得有點(diǎn)雜亂膀钠,而且口語化掏湾。今晚與一個(gè)技術(shù)很NB而且人又很nice的學(xué)長交流裹虫,結(jié)合自己的一些經(jīng)驗(yàn),寫下一些東西融击,希望能給他人提供一點(diǎn)啟發(fā)筑公,同時(shí)也歡迎留言指正。
杭州蕭山
2018.1.5