敏捷開發一千零一問系列之三十六:跨平臺開發的人員和代碼複用

本文是敏捷開發一千零一問的第三十六篇。(欄目總目錄

來源: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的唯一差別,就是一個他用過,一個沒用過而已的程序員。

我師傅和我本人都算是,有個徒弟也是……總之很多的。這樣的程序員以前不好找,現在好找了,畢竟又一個十年過去了;有時候這人就呆在公司裏邊,只是沒有機會發揮一下。

然後,讓這個程序員兩邊一起跑,以他擅長一邊爲主(這一邊承擔上面提到的那個“先做”然後對方拷貝修改的事情),另外一邊沒事去照顧照顧,幫助解決一下問題。


最後,一個用不好兩門語言的程序員,不是一個好程序員。說明他本身只是學會了記問之學(就是死記硬背的部分),而不通達語言背後的設計思想。


這些做好了,差不多兩邊同步的工作也就差不多了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章