本文是敏捷开发一千零一问的第三十六篇。(栏目总目录)
来源:http://blog.csdn.net/cheny_com/article/details/7564388#comments 提问帖第18楼
问题:
团队里有不同专业的人员,例如开发iPhone和安卓的手机人员,他们一起召开每日会议的话意义有多大?因为iPhone项目的进度和安卓项目的进度看似关系不大,iPhone开发人员遇到的问题安卓开发人员也无法解决。
答案:(以后开始写这些短平快的答案了)
1. 技术上,现在有合并代码的趋势了
在Gooogle上搜:"C# Android IOS",有一家公司正在和MS合作,开发一种一次编码,就能解决三个平台代码的方法。
可惜,只能用C#,JAVA似乎不行。
2. 技术上,隔离业务代码和底层代码,从而复用业务代码;或反之
如果你看过asp.net 的那种既有VB又有C#的例子的教材,就会感觉两者其实完全是一种语言,只是被什么人“全文搜索替换”了一下而已。
这一点,得益于MS自己把语言底层封装了,这样上面调用的函数看起来都差不多,下面他再翻译一下就结束了。
对Android和IOS两个平台而言(以下简称A和I),也是如此。
比如,如果要发送一个短信,两者的函数都应该这么写(无论用Java还是ObjectC):
bool SendShortMessage(int receiverId, string message)
{
if (!Exist(receiverId)
return false;
....//一堆与底层无关的判断语句。
var result = Messager.Send(message, ref errorCode); //一个A和I平台都叫做这个名字的静态变量。
if (!result)
{
//一堆处理底层发送失败的代码,把errorCode转换成人类能懂的内容,提醒给发短信的人。
}
}
这个函数就叫做业务代码函数,就是和这是什么语言,下面是什么平台没太大关系的一个函数;凡是与平台相关的内容,都尽量推送到下一层处理。
这样,有多种潜在结果(越前面的越好,但也越难):
1. 一个文件,做批处理(专业术语叫做“代码生成”),形成Java和OC语言。
2. 一个文件,拷贝粘贴形成多语言。
3. 一个文件,先做一个平台,另外一个平台拿过去改改,就变成另外一个平台的语言(大家从功能上分工一下,互相拷贝一半)
这个事情我们之前在做数字电视的时候做过,后台的VC++和前台机顶盒里边的C代码共用。不过那时候用法相反,是复用底层的加密解密、打包拆包,而上面的业务不同。
3. 管理上,使用*的程序员做业务和技术架构
所谓*的程序员,就是Java和OC的唯一差别,就是一个他用过,一个没用过而已的程序员。
我师傅和我本人都算是,有个徒弟也是……总之很多的。这样的程序员以前不好找,现在好找了,毕竟又一个十年过去了;有时候这人就呆在公司里边,只是没有机会发挥一下。
然后,让这个程序员两边一起跑,以他擅长一边为主(这一边承担上面提到的那个“先做”然后对方拷贝修改的事情),另外一边没事去照顾照顾,帮助解决一下问题。
最后,一个用不好两门语言的程序员,不是一个好程序员。说明他本身只是学会了记问之学(就是死记硬背的部分),而不通达语言背后的设计思想。
这些做好了,差不多两边同步的工作也就差不多了。