敏捷开发一千零一问系列之三十六:跨平台开发的人员和代码复用

来源:互联网 发布:sql字符串拼接赋值 编辑:程序博客网 时间:2024/05/02 00:51

本文是敏捷开发一千零一问的第三十六篇。(栏目总目录

来源: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的唯一差别,就是一个他用过,一个没用过而已的程序员。

我师傅和我本人都算是,有个徒弟也是……总之很多的。这样的程序员以前不好找,现在好找了,毕竟又一个十年过去了;有时候这人就呆在公司里边,只是没有机会发挥一下。

然后,让这个程序员两边一起跑,以他擅长一边为主(这一边承担上面提到的那个“先做”然后对方拷贝修改的事情),另外一边没事去照顾照顾,帮助解决一下问题。


最后,一个用不好两门语言的程序员,不是一个好程序员。说明他本身只是学会了记问之学(就是死记硬背的部分),而不通达语言背后的设计思想。


这些做好了,差不多两边同步的工作也就差不多了。

1 0
原创粉丝点击