移植Java代碼到C++的心得

來源:互聯網
上載者:User

      在實際的開發過程中,我們的項目或產品通常都會用到一些第三方開源組件或商業組件,以協助開發人員實現一些特定的通用功能,如xml解析,Regex解析和資料壓縮等。一般而言,只有在這兩者均無法滿足現有需求的情況下,我們才會考慮自行研發。因為適當的應用第三方組件可以保證開發人員能夠將更多的精力投入到產品的核心演算法和核心商務邏輯上,從而確保產品的開發週期和產品品質均能達到客戶與公司滿意的程度。
      相比於開源組件,很多商業組件都提供了更易於操作的使用者介面,豐富的文檔和範例程式碼,以及更靈活的介面和更多的功能。通常而言,一旦我們選定了某一商業組件,它所提供的功能就已經可以滿足我們的需求了。然而對於開源組件卻並非總是如此,我們偶爾會需要對其進行部分修改或對其介面進行二次封裝,所幸的是,主體功能不會受到影響。眾所周知,Java的開源社區極為活躍,提供了功能豐富的眾多開源組件,相比於Java,C++的開源組件在數量上和功能豐富程度上都要相形見絀了。鑒於此,我們可以選擇將已有的Java組件的部分或全部功能用C++重新實現,並形成自己的基礎組件。和完全自行開發相比,這樣的方式確實降低了一定的風險,但仍然是一條布滿荊棘卻又充滿挑戰的坎坷道路。然而在整個代碼移植的過程中,卻可以讓開發人員受益匪淺,下面列出主要幾點:

      1. 很多開源組件都是由編程經驗豐富的開發人員完成,其設計風格和實現技巧,以及對細節問題的處理方式都會給我們帶來一定的協助和啟發。
      2. 紙上來得終覺淺,絕知此事要躬行。很多設計技巧只有在親自編碼或給自己寫Test Case的時候才能真正體會出來。
      3. 可以更好的理解兩種語言之間的差異,並充分挖掘他們的潛力,甄別各自的優缺點。這樣在今後的開發中就可以更好的駕馭這兩種語言了。
      4. 很多時候語言的差異確實影響了組件的設計,我們的目標是充分利用當前語言的特性來完成我們的設計與實現,而不是用一種通用的方式應對所有的語言,這樣往往會給人一種橘生淮北的感覺。
      5. 在實現的過程中,可能因此而掌握一種演算法或通用的業界標準。
      6. 如果有些演算法或功能是自己擅長的,則可以利用這個機會將其嵌入到重新實現的組件中,這樣不僅可以驗證自己的想法,同時也可以提高新組件的效能和可擴充性。
      7. 有針對性的剔除部分冗餘代碼或功能,以提高新組件的效率和易用性。
      8. 相比於完全自行研發,由於已有的組件已經對很多邊界問題進行了處理和分析,因此該類問題也會在新組件中得以解決,這樣便可以極大的提高新組件的穩定程度,從而大大的縮短單元測試的周期。

      需要說明的是,這裡列出的問題和解決方案僅僅為本人的實踐經驗,如您有更好的辦法或遇到新的問題,本人誠摯的希望與您多多交流,共同提高。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.