本文是敏捷開發一千零一問的第三十六篇。(欄目總目錄)
來源: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的唯一差別,就是一個他用過,一個沒用過而已的程序員。
我師傅和我本人都算是,有個徒弟也是……總之很多的。這樣的程序員以前不好找,現在好找了,畢竟又一個十年過去了;有時候這人就呆在公司裏邊,只是沒有機會發揮一下。
然後,讓這個程序員兩邊一起跑,以他擅長一邊爲主(這一邊承擔上面提到的那個“先做”然後對方拷貝修改的事情),另外一邊沒事去照顧照顧,幫助解決一下問題。
最後,一個用不好兩門語言的程序員,不是一個好程序員。說明他本身只是學會了記問之學(就是死記硬背的部分),而不通達語言背後的設計思想。
這些做好了,差不多兩邊同步的工作也就差不多了。