敏捷开发一千零一问系列之三十六:跨平台开发的人员和代码复用
来源:互联网 发布: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的唯一差别,就是一个他用过,一个没用过而已的程序员。
我师傅和我本人都算是,有个徒弟也是……总之很多的。这样的程序员以前不好找,现在好找了,毕竟又一个十年过去了;有时候这人就呆在公司里边,只是没有机会发挥一下。
然后,让这个程序员两边一起跑,以他擅长一边为主(这一边承担上面提到的那个“先做”然后对方拷贝修改的事情),另外一边没事去照顾照顾,帮助解决一下问题。
最后,一个用不好两门语言的程序员,不是一个好程序员。说明他本身只是学会了记问之学(就是死记硬背的部分),而不通达语言背后的设计思想。
这些做好了,差不多两边同步的工作也就差不多了。
- 敏捷开发一千零一问系列之三十六:跨平台开发的人员和代码复用
- 敏捷开发一千零一问系列之三十六:如何做小版本迭代的代码管理
- 敏捷开发一千零一问系列之二十五:什么是敏捷开发的根本基础?
- 敏捷开发一千零一问系列之十五:同时实施CMMI和敏捷哪个为主?
- 敏捷开发一千零一问系列之十五:同时实施CMMI和敏捷哪个为主?
- 敏捷开发一千零一问系列之十二:敏捷实施的步骤?
- 敏捷开发一千零一问系列之十二:敏捷实施的步骤?
- 敏捷开发一千零一问系列之十一:需求谁做主?
- 敏捷开发一千零一问系列之十九:提问帖
- 敏捷开发一千零一问系列之十一:需求谁做主?
- 敏捷开发一千零一问系列之十九:提问帖
- 敏捷开发一千零一问系列(上)
- 敏捷开发一千零一问系列(中)
- 敏捷开发一千零一问系列之二十一:外部教练还是外部教练?(敏捷开发改进的主体问题)
- 敏捷开发一千零一问系列之三十一:敏捷开发与野路子的区别是什么?(一)
- 敏捷开发一千零一问系列之三十二:敏捷开发与野路子的区别是什么?(二)
- 敏捷开发一千零一问系列之二:序言及解决问题的心法(无住)
- 敏捷开发一千零一问系列之三:序言及解决问题的心法(共振)
- EBS Form开发中的内置函数EXECUTE_TRIGGER
- 精简代码,为网站减负的十大建议
- 撕美女衣服应用的原理及做法
- list - insertion sort - AC
- OpenGL学习八:缓冲区对象
- 敏捷开发一千零一问系列之三十六:跨平台开发的人员和代码复用
- EasyHook库系列使用教程之二插入钩子接口
- 神经网络与机器学习-0导言
- 在c#中调用另一个应用程序或命令行(.exe 带参数)
- Get More Affiliates by Connecting with Serious Niche Bloggers
- Android进程与内存及内存泄露
- vi 操作笔记
- CRichedit在结尾添加一行,同时设置字体,大小及颜色,并在添加后自动滚屏到末行,
- 如何解决程序退出重启后不能绑定端口的问题?