有时候觉得,移植项目就像一场外科手术,移植代码就像是移植器官。

首先,你得找好要移植的代码,就像要找好要移植的器官一样。你需要什么功能的器官?你的病人需要一颗心脏,你总不能找个肾脏来,就算那是个完美无比世间罕见的肾脏也不行。

能完成这个功能的器官可能来源很多,有人的,也有动物的。你要移植的代码,也是来自不同背景的,有操作系统强相关的,有完全不依赖操作系统的。你得根据移植的需求方来仔细甄别。比如你的病人是人类,你当然最好找个人类的心脏,并且排斥反应最小的,否则手术完了病人也挂了。你的原系统是某个操作系统的,最好就用这种操作系统上的模块,至少是风格相近的,如果你的原系统是无操作系统的,你要找的就是不依赖操作系统的模块,或者凭你的能力完全有把握从操作系统里剥离改造出来的。

器官找好了,要移植的模块找好了,要开始手术了。

手术过程就不多说了,医生要基本功好、体力好(做项目你也得有力气加班不是?)、眼神儿好(检视的时候你也得揪bug不是?)、有细心加耐心(接口多的时候你得一个个适配不是?),总之,需要你具备一个主治医师的所有素质,连开发带定位带基本测试的你都得一手搞定。如果是一台超级大手术,你还得指挥好一个团队。

移植中有几个事儿,我觉得移植代码得要向移植器官学习:

1、你是移植器官,不是再造器官。尽管你知道心脏是怎么跳的,这个时候也不需要你自己创造这个功能,你的精力集中在移植上。我们移植代码的时候也一样,别上来先想着把移植代码乾坤大挪移一番,最好是保持它的原貌,只在接口上做适配。

2、想好了接口再动手。要连接哪些血管和神经,心里一定得清清楚楚。

3、如果不幸发现正在移植的器官上有大bug,你就不得不动手修一下,但是也仅仅修复一下即可,千万别奔着大改造的方向去,否则这台手术就没完没了了。

好在移植代码不像移植器官那么人命关天,手术缝合了以后,就提交验收了,没事就出院了,万一出大事,估计也不能重新移植一次。如果代码移植测出来大问题,还好有机会,改到完善为止吧,只是项目质量要大打折扣了。