国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Worktile 移動(dòng)團(tuán)隊(duì)如何使用 C++ 完成 Worktile Pro 跨平臺(tái)應(yīng)用開發(fā)

NSFish / 1314人閱讀

摘要:下一節(jié)下一節(jié)中我們將以介紹我們是如何搭建一個(gè)包含網(wǎng)絡(luò)請(qǐng)求緩存的應(yīng)用。再下一節(jié)下一節(jié)中我們將介紹我們?nèi)绾问褂么a自動(dòng)構(gòu)建工具構(gòu)建出我們的層代碼以節(jié)約反復(fù)編寫同樣結(jié)構(gòu)代碼的時(shí)間。

動(dòng)機(jī)

“好的代碼值得共享”

“快速完成第一版的原型,快速迭代”,如同許多初創(chuàng) Sass 公司一樣,我們也同樣信奉這個(gè)時(shí)代快速迭代的開發(fā)方式,按照設(shè)計(jì),我們第一個(gè)上線的版本是我們的 Web 版以及 iPhone 端,緊接著,我們面臨著需要做 Android 移植開發(fā)的需求,這時(shí)擺在我們面前的有幾個(gè)糾結(jié): 如果開放 iPhone 的源碼給 Android 的同學(xué) “翻譯” 一遍 iPhone 的工程了話可能會(huì)面臨同樣的一個(gè) Bug 被 duplicate 了一遍,然后 iPhone 的改了,再建個(gè)任務(wù)給 Android 的同學(xué) - “Hi, 我們這里改了一個(gè) Bug, 你們也改改吧”,然后每做一個(gè)模塊,再各自產(chǎn)生一堆的 Bug,再瘋狂的改 Bug - 好的代碼沒有被復(fù)用,只是 Bug 被一次又一次的提上日程。而且在快速迭代中,我們需要用很少的人力(1 iOS, 1 Android)來(lái)完成初期版本的開發(fā),而且在快速的迭代過(guò)程中,我們需要頻繁的面對(duì)諸如接口變動(dòng),某個(gè)類添加了一個(gè)字段這種需求,所以我們自然開始探索起一份跨平臺(tái)的解決方案。

在探索了當(dāng)前主流的跨平臺(tái)技術(shù)路線中,runtime 方式跨平臺(tái)的(如嵌入一個(gè) WebView)方式由于其性能有明顯的滯后感并沒有列入我們的考慮范圍,我們主要考慮了使用 C++ 這種各個(gè)平臺(tái)都支持的方案以及“翻譯系”的方案(j2objc 等) 后,針對(duì)我們的背景: 開發(fā)人員比較少,而且之后招聘到的人員應(yīng)當(dāng)是以原生平臺(tái)語(yǔ)言為主 (這點(diǎn)在事后被證明創(chuàng)業(yè)公司非常需要考慮,比如做 iOS 開發(fā)的招到一個(gè)會(huì) Swift 的也會(huì) Java 的相對(duì)來(lái)說(shuō)還是很困難的),最終決定使用 C++ 11 作為核心庫(kù)的語(yǔ)言 (核心庫(kù)指的是 MVC 中 Model 層的所有代碼)。

在1年半的實(shí)踐中,C++ 11 帶來(lái)的好處主要有

穩(wěn)定: C++ 的方法幾乎不會(huì)出現(xiàn) deprecated 的狀況,相對(duì)于我們 iOS 使用 Swift 幾乎每次 Swift 都有代碼遷移的工作, C++ 的代碼部分極其穩(wěn)定

性能: 這點(diǎn)其實(shí)在對(duì)性能要求相對(duì)較低的 App 開發(fā)領(lǐng)域,其實(shí)不是特別特別需要考慮的問(wèn)題

容易搜索: 作為一門歷史悠久的成熟語(yǔ)言,大部分的問(wèn)題都可以 Google 出來(lái) (這點(diǎn)其實(shí)也是非常重要的)

單元測(cè)試: 依賴于 gtest,單元只需要寫一遍, 并且可以運(yùn)行于所有的平臺(tái)之上 (單元測(cè)試是我們目前發(fā)現(xiàn)的唯一一種可以保證代碼質(zhì)量的方法)

有現(xiàn)成的代碼規(guī)范: 基于 Google C++ Code Style 以及其提供的 lint 檢測(cè)工具,我們可以很大程度上保證 C++ 代碼的可讀性,這份 Code Style 很好的解決了 C++ 內(nèi)存管理部分難以判斷的問(wèn)題

方法

“C++ 11 是一門全新的語(yǔ)言”

C++ 在 iOS 上可以通過(guò) Objective-C++ 的形式進(jìn)行幾乎原生的調(diào)用,并且由于 C++ 11 Smart Pointer 的出現(xiàn),幾乎不需要進(jìn)行額外的內(nèi)存管理。

在 Android 平臺(tái)上,C++ 是通過(guò) NDK 進(jìn)行的調(diào)用,對(duì)于 Java 的開發(fā)者來(lái)說(shuō), C++ 仍然是一門有著比較陡峭的學(xué)習(xí)曲線的語(yǔ)言,但是在工程開始初期,團(tuán)隊(duì)只需要1名 C++ 的編寫者,所以還是有比較充分的學(xué)習(xí)時(shí)間留給 Android 開發(fā)的同學(xué)。

在成功的 Hello World 之后接下來(lái)就是考慮一些常用模塊的遷移 (這里也是一個(gè)極其重要的需要預(yù)先調(diào)研的地方,如果一個(gè)功能的第三方庫(kù)沒有找到很好的 C++ 的替代品,那么用 C++ 自行實(shí)現(xiàn)一次有時(shí)候會(huì)是一個(gè)非常巨大的成本)

對(duì)于我們常用的網(wǎng)絡(luò)鏈接、緩存等功能,都已經(jīng)有一些現(xiàn)成的成熟第三方庫(kù)可以滿足我們,對(duì)于 App 開發(fā),常見的有:

HTTP 網(wǎng)絡(luò)連接: (libcurl)

SQLite 持久化存儲(chǔ)(easySqlite)

JSON 解析 (json11)

XML 解析 (tinyxml2)

Websockets (libwebsockets)

Key-value 緩存 (levelDB 或者用 SQLite)

結(jié)構(gòu)

如上圖所示,我們將所有復(fù)雜的核心邏輯都寫在了 C++ Core 這層,Objective-C++ 和 Java Wrapper 只是簡(jiǎn)單的將 C++ 的方法以 Objective-C 和 Java 的形式暴露給了 App Developer 進(jìn)行調(diào)用 (Win C++ 可以直接調(diào)用標(biāo)準(zhǔn) C++,只需要 dll import/export 好了對(duì)應(yīng)的代碼就行)。對(duì)于 UI 層的界面代碼,我們?nèi)匀皇褂?Swift 以及 Java 進(jìn)行書寫,這樣可以保證我們最大可能的能獲取原生 App 帶來(lái)的好處,以及對(duì)系統(tǒng)自身的 API 訪問(wèn)的便利性,而且原生的 App 開發(fā)者在進(jìn)行產(chǎn)品布局等改動(dòng)的時(shí)候也能最大程度的獲得原生平臺(tái)的大量的第三方庫(kù)的幫助。

示例代碼

本篇我們將提供最簡(jiǎn)單的 iOS 以及 Android [示例代碼]來(lái)闡述我們的結(jié)構(gòu)。

下一節(jié)

下一節(jié)中我們將以 Worktile OpenAPI 介紹我們是如何搭建一個(gè)包含網(wǎng)絡(luò)請(qǐng)求、緩存的應(yīng)用。

再下一節(jié)

下一節(jié)中我們將介紹我們?nèi)绾问褂么a自動(dòng)構(gòu)建工具構(gòu)建出我們的 Model 層代碼以節(jié)約反復(fù)編寫同樣結(jié)構(gòu)代碼的時(shí)間。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/65761.html

相關(guān)文章

  • Worktile 移動(dòng)團(tuán)隊(duì)如何使用 C++ 完成 Worktile Pro 平臺(tái)應(yīng)用開發(fā)<2

    摘要:請(qǐng)求下來(lái)數(shù)據(jù)之后,我們使用了提供的進(jìn)行解析,類化。示例代碼本篇我們將提供以及示例代碼來(lái)闡述我們上文中提到的用法。下一節(jié)下一節(jié)中我們將針對(duì)初創(chuàng)公司端技術(shù)團(tuán)隊(duì)構(gòu)建的一些問(wèn)題來(lái)闡述我們的團(tuán)隊(duì)如何構(gòu)建以及運(yùn)作的。 設(shè)計(jì) 網(wǎng)絡(luò)請(qǐng)求 - 解析數(shù)據(jù) - 寫入緩存 - 讀取緩存 在上篇的文章中我們說(shuō)明了我們?cè)谑窃?MVC 層面的 M 層共享了代碼,不過(guò)對(duì)于只是有可能需要 OpenSDK 的團(tuán)隊(duì)來(lái)說(shuō),更...

    seanHai 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<