Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android系列之如何成為Android編程高手第二篇

Android系列之如何成為Android編程高手第二篇

編輯:Android開發實例

三:編寫可重用、可擴展、可維護、靈活性高的代碼
Android應用程序的開發是使用Java編寫,在架構上使用MVC,鼓勵組件之間的若耦合。開發出編寫可重用、可擴展、可維護、靈活性高的代碼需要經歷遵循以下原則:
l "開-閉"原則(OCP):一個軟件實體應當對擴展開放,對修改關閉。這個原則說的是,在設計一個模塊的時候,應當使這個模塊可以在不被修改的前提下被擴展。換言之,應當可以在不必修改源代碼的情況下改變這個模塊的行為。
l 裡氏代換原則(LSP):一個軟件實體如果使用的是一個基類的話,那麼一定使用於其子類,而且它根本不能察覺出基類對象和子類對象的區別。
l 依賴倒轉原則(DIP):要依賴於抽象,不要依賴於具體。
l 接口隔離原則(ISP):使用多個專門的接口比使用單一的總接口要好。一個類對另外一個類的依賴性應當是建立在最小的接口上的。
l 合成/聚合復用原則(CARP):又稱合成復用原則(CRP),就是在一個新的對象裡面使用一些已有的對象,使之成為新對象的一部分;新的對象通過向這些對象的委派達到復用已有功能的目的。簡而言之就是:要盡量使用合成/聚合,盡量不要使用繼承。
l 迪米特法則(LoD):又稱最少知識原則(LKP),就是說一個對象應當對其他對象盡可能少的了解。狹義的迪米特法則是指如果兩個類不必彼此直接通信,那麼這兩個類就不應當發生直接的相互作用.如果其中一個類需要調用另一個類的方法的話,可以通過第三者轉發這個調用.。廣義的迪米特法則是指一個模塊設計得好壞的一個重要的標志就是該模塊在多大的程度上將自己的內部數據與實現有關的細節隱藏起來。信息的隱藏非常重要的原因在於,它可以使各個子系統之間脫耦,從而允許它們獨立地被開發,優化,使用閱讀以及修改.。
靈活的使用設計模式可以在面對千變萬化的業務需求是編寫出可重用、可擴展、可維護、靈活性高的代碼。
當然,由於Android是運行在移動設備上的,而移動設備的處理能力是有限的,所以有時間必須在編寫可重用、可擴展、可維護、靈活性高的代碼與高效的代碼之間做出適當的平衡。
四:高效的編寫高效的代碼
高效快速的編寫代碼和編寫高效率執行的代碼很多時候都是對立的死敵,很多時候,你想快速的開發,代碼的執行效率往往就會慢下來;你想編寫高效的代碼,開發速度就會慢下來。
不重復發明輪子和發明新的輪子是高效的編寫高效的代碼的正確是道路。
關於高效的代碼,下面網絡的一篇文章,直接轉載(不知道是哪位哥們寫的)如下:
“現代的手持設備,與其說是電話,更像一台拿在手中的電腦。但是,即使是“最快”的手持設備,其性能也趕不上一台普通的台式電腦。
這就是為什麼我們在書寫Android應用程序的時候要格外關注效率。這些設備並沒有那麼快,並且受電池電量的制約。這意味著,設備沒有更多的能力,我們必須把程序寫的盡量有效。
本文討論了很多能讓開發者使他們的程序運行更有效的方法,遵照這些方法,你可以使你的程序發揮最大的效力。
對於占用資源的系統,有兩條基本原則:
1. 不要做不必要的事
2. 不要分配不必要的內存
所有下面的內容都遵照這兩個原則。
有些人可能馬上會跳出來,把本節的大部分內容歸於“草率的優化”(xing:參見[The Root of All Evil]),不可否認微優化(micro-optimization。xing:代碼優化,相對於結構優化)的確會帶來很多問題,諸如無法使用更有效的數據結構和算法。但是在手持設備上,你別無選擇。假如你認為Android虛擬機的性能與台式機相當,你的程序很有可能一開始就占用了系統的全部內存(xing:內存很小),這會讓你的程序慢得像蝸牛一樣,更遑論做其他的操作了。
Android的成功依賴於你的程序提供的用戶體驗。而這種用戶體驗,部分依賴於你的程序是響應快速而靈活的,還是響應緩慢而僵化的。因為所有的程序都運行在同一個設備之上,都在一起,這就如果在同一條路上行駛的汽車。而這篇文檔就相當於你在取得駕照之前必須要學習的交通規則。如果大家都按照這些規則去做,駕駛就會很順暢,但是如果你不這樣做,你可能會車毀人亡。這就是為什麼這些原則十分重要。
當我們開門見山、直擊主題之前,還必須要提醒大家一點:不管VM是否支持實時(JIT)編譯器(xing:它允許實時地將Java解釋型程序自動編譯成本機機器語言,以使程序執行的速度更快。有些JVM包含JIT編譯器。),下面提到的這些原則都是成立的。假如我們有目標完全相同的兩個方法,在解釋執行時foo()比bar()快,那麼編譯之後,foo()依然會比bar()快。所以不要寄希望於編譯器可以拯救你的程序。

轉自:http://www.cnblogs.com/jk1001/archive/2010/08/08/1795000.html

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved