精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從Effective Java總結一些有助安卓開發的建議

移動開發 Android 后端
本文關注于《Effective Java》這本書中我認為對于 Android 開發至關重要的知識點。對于閱讀過這本書的人來說,本文可以作為書中提到的原則/知識的回顧。對于那些(目前)還沒有讀過的人來說,本文可以給他們一個機會去嘗試下這本書。

從Effective Java總結一些有助安卓開發的建議

在編寫長期運行下既易于維護又能保持高效的 Java 代碼這方面 ,《Effective Java》 被很多人看做最重要的書之一。 Android 使用的是 Java 語言,這就意味著這本書中所有給出的建議一定都是適用與 Android 的,對嗎?答案是:不一定。

有些人認為這本書給出的大多數建議都不適用于 Android 開發。在我看來,也并非如此。我認為這本書中有一部分是不適用的,因為不是所有的 Java 特性都是為了用于 Android 而優化的(比如枚舉,序列化等等),也因為移動設備存在自身的限制(比如 Dalvik/ART 表現和 JVM 不同)。盡管如此,這本書中的大多數范例還是能夠不加修改或者少量修改地被使用,并能夠有助于建立一個更加健康、干凈和可維護的代碼庫。

本文關注于這本書中我認為對于 Android 開發至關重要的知識點。對于閱讀過這本書的人來說,本文可以作為書中提到的原則/知識的回顧。對于那些(目前)還沒有讀過的人來說,本文可以給他們一個機會去嘗試下這本書。

強制不可實例化

如果你不希望使用 new 關鍵字來創建一個對象,那就強制使用私有構造器(private constructor)。這對于僅包含靜態方法的工具類來說更加有用。

  1. List<Movie> latestMovies() { 
  2.     if (db.query().isEmpty()) { 
  3.         return Collections.emptyList(); 
  4.     } 
  5.     [...] 
  6.  

靜態工廠

不要使用 _new_ 關鍵字和構造器,使用靜態工廠方法(以及一個私有的構造器)。這些工廠方法是命名的,不需要每次都返回一個新的對象實例,而且可以根據需要返回不同的子類型。

  1. class Movie { 
  2.     [...] 
  3.     public static Movie create(String title) { 
  4.         return new Movie(title); 
  5.     } 
  6.  

【更新】讀者 @ stsdema28 提出了一個有用的建議:使用靜態工廠會使得測試變得困難。如果這樣的話,不妨考慮使用一個非靜態的工廠用于在測試時進行模擬(或者一個能夠實現的工廠接口)。

Builders

當你有需要三個以上的構造參數時,使用 Builder 去構造這個對象。寫起來可能有點啰嗦但是這樣伸縮性和可讀性都很好。如果你創建的是值類型,考慮 AutoValue。

  1. class Movie { 
  2.     static Builder newBuilder() { 
  3.         return new Builder(); 
  4.     } 
  5.     static class Builder { 
  6.         String title; 
  7.         Builder withTitle(String title) { 
  8.             this.title = title; 
  9.             return this; 
  10.         } 
  11.         Movie build() { 
  12.             return new Movie(title); 
  13.         } 
  14.     } 
  15.   
  16.     private Movie(String title) { 
  17.     [...]     
  18.     } 
  19. // Use like this: 
  20. Movie matrix = Movie.newBuilder().withTitle("The Matrix").build();  

避免可變性

不可變對象在其整個生命周期中都保持不變。所有需要的數據都在對象創建時提供。這種方式有著多種優點,如簡單,線程安全以及可共享。

  1. class Movie { 
  2.     [...] 
  3.     Movie sequel() { 
  4.         return Movie.create(this.title + " 2"); 
  5.     } 
  6. // Use like this: 
  7. Movie toyStory = Movie.create("Toy Story"); 
  8. Movie toyStory2 = toyStory.sequel();  

或許很難做到每個類都不可變。對于這種情況,盡可能使你的類變得不可變(比如使用 private final 字段,final 類聲明)。在移動設備上創建對象代價更加昂貴,因此不要過度使用。

靜態成員類

如果你定義了一個不依賴于外部類的內部類,別忘了將其定義為靜態的。不這么做的話會導致每個內部類的實例都會擁有對外部類的引用。

  1. class Movie { 
  2.     [...] 
  3.     static class MovieAward { 
  4.         [...] 
  5.     } 
  6.  

泛型(幾乎)無處不在

Java 提供了類型安全的特性,我們應對此心懷感激(看看JS吧)。盡量避免使用原始類型 (raw types)或者對象類型。泛型大多數情況下都提供了讓你的代碼在編譯時類型安全的機制。

  1. // DON'T 
  2. List movies = Lists.newArrayList(); 
  3. movies.add("Hello!"); 
  4. [...] 
  5. String movie = (String) movies.get(0); 
  6.   
  7. // DO 
  8. List<String> movies = Lists.newArrayList(); 
  9. movies.add("Hello!"); 
  10. [...] 
  11. String movie = movies.get(0);  

別忘了你能在函數的參數和返回值中使用泛型。

  1. // DON'T 
  2. List sort(List input) { 
  3.     [...] 
  4.   
  5. // DO 
  6. <T> List<T> sort(List<T> input) { 
  7.     [...] 
  8.  

為了更加靈活你可以使用 bounded wildcards 來拓展可接受的類型的范圍。

  1. // Read stuff from collection - use "extends" 
  2. void readList(List<? extends Movie> movieList) { 
  3.     for (Movie movie : movieList) { 
  4.         System.out.print(movie.getTitle()); 
  5.         [...] 
  6.     } 
  7.   
  8. // Write stuff to collection - use "super" 
  9. void writeList(List<? super Movie> movieList) { 
  10.     movieList.add(Movie.create("Se7en")); 
  11.     [...] 
  12.  

返回空(列表/集合)

當必須返回空的列表/集合時,避免使用null。返回一個空的集合會產生一個更簡單的接口(不需要去進行文檔注釋并聲明函數返回值為 null),還能避免意外的空指針異常。***返回一個相同的空集合而不是創建一個新的。

  1. List<Movie> latestMovies() { 
  2.     if (db.query().isEmpty()) { 
  3.         return Collections.emptyList(); 
  4.     } 
  5.     [...] 
  6.  

不要用 + 連接 String

如果要連接幾個字符串,+ 操作符或許可以。但永遠不要使用它來進行大量的字符串連接,那樣性能會十分糟糕。***使用 StringBuilder 來代替。

  1. String latestMovieOneLiner(List<Movie> movies) { 
  2.     StringBuilder sb = new StringBuilder(); 
  3.     for (Movie movie : movies) { 
  4.         sb.append(movie); 
  5.     } 
  6.     return sb.toString(); 
  7.  

可恢復的異常

我不喜歡通過拋出異常來指明錯誤,但如果你這樣做的話,就要確保異常被檢查并且異常的捕獲者能夠從錯誤中恢復。

  1. List<Movie> latestMovies() throws MoviesNotFoundException { 
  2.     if (db.query().isEmpty()) { 
  3.         throw new MoviesNotFoundException(); 
  4.     } 
  5.     [...] 
  6.  

總結

列舉的這些不是這本書中所給出的完整建議,也不是簡短說明深入評價。只是這些有用的建議的一紙小抄而已 :)。 

責任編輯:龐桂玉 來源: 安卓開發精選
相關推薦

2015-12-08 09:05:41

Java內部類

2009-06-22 15:36:00

如何學好java

2013-12-03 10:30:28

iOS開發程序員自我提升

2009-07-09 13:16:54

Java Swing開

2018-11-20 14:24:46

數據分析數據庫統計

2012-11-09 10:46:24

Canonical

2020-09-21 06:58:56

TS 代碼建議

2017-11-29 18:52:13

Python新手編碼建議

2010-06-13 15:18:02

UML實踐

2024-01-30 10:11:00

SpringBoot項目開發

2021-08-08 10:44:33

安卓系統開發者手機廠商

2022-05-17 16:56:33

開發工具前端

2009-09-27 11:09:42

API設計

2011-07-12 09:47:53

WebService

2011-11-28 15:57:26

MySQL數據庫主從配置

2015-08-26 08:31:35

核心程序員成長

2016-11-11 20:33:53

Hadoop大數據云計算

2011-04-27 09:21:09

程序員

2023-11-10 08:48:09

Lombok庫Java8

2015-08-26 09:31:26

程序員建議
點贊
收藏

51CTO技術棧公眾號

秘密基地免费观看完整版中文| 91久久国产综合久久蜜月精品| 中文字幕第3页| 天堂网在线最新版www中文网| 97超碰欧美中文字幕| 国产精品久久久久久久久久免费| 亚洲精品卡一卡二| 77成人影视| 欧洲激情一区二区| 国产又粗又大又爽的视频| 香蕉视频网站在线| 日韩精品亚洲专区| 欧美国产精品人人做人人爱| a毛片毛片av永久免费| 国产精品亚洲欧美日韩一区在线| 亚洲电影第三页| 亚洲欧美国产一区二区| 狠狠躁夜夜躁av无码中文幕| 免费欧美在线视频| 91国内揄拍国内精品对白| 亚洲综合第一区| 国产精品巨作av| 欧美性生活大片视频| 丰满少妇大力进入| 日本视频不卡| 99精品视频一区二区三区| 日本韩国欧美精品大片卡二| 美女视频黄免费| 国产欧美一区二区精品久久久| 欧美日韩专区在线| 国产 日韩 亚洲 欧美| 波多野结衣在线网站| 成人污污视频在线观看| 国产精品久久久久久久久久免费| 国语对白一区二区| 欧美中文一区二区| 日韩av中文字幕在线| 五月婷婷之婷婷| 午夜激情电影在线播放| 亚洲欧洲av色图| 久久精品一区二区三区不卡免费视频| 中文字幕一区二区免费| 99热免费精品| 久久夜精品va视频免费观看| 蜜桃传媒一区二区亚洲av| 国产精品777777在线播放| 狠狠躁夜夜躁人人爽天天天天97| 男人的天堂成人| 九色国产在线观看| 成人久久久精品乱码一区二区三区 | 国产老妇另类xxxxx| 欧美亚洲国产视频小说| 看片网站在线观看| 久久要要av| 亚洲欧美综合另类中字| 亚洲高清无码久久| 国产 日韩 欧美| 欧美日韩中文一区| 777米奇影视第四色| 国产亚av手机在线观看| 中文字幕在线不卡一区| 欧美下载看逼逼| 亚洲av成人精品一区二区三区在线播放| 国产尤物一区二区在线| 国产精品久久久久久久久久| 少妇高潮av久久久久久| av不卡在线看| 午夜精品一区二区三区在线视频| 国语对白在线播放| 天天做天天爱天天爽综合网| 中文字幕欧美在线| 少妇人妻好深好紧精品无码| 日韩欧美在线精品| 亚洲国产精品久久久久久| 日韩a一级欧美一级| 九九九精品视频| 91激情五月电影| 日韩欧美精品在线观看视频| 91高清视频在线观看| 亚洲尤物在线视频观看| 草b视频在线观看| 99riav视频在线观看| 亚洲va欧美va人人爽| 国产欧美日韩小视频| 欧美6一10sex性hd| 亚洲福利视频导航| 欧美在线一区视频| 男人天堂视频在线观看| 午夜视频久久久久久| 国产免费黄色小视频| 9lporm自拍视频区在线| 富二代精品短视频| 少妇性l交大片| av免费在线一区| 欧美日韩和欧美的一区二区| www,av在线| 激情视频极品美女日韩| 亚洲免费小视频| a级黄色免费视频| 亚洲精彩视频| 久久精品国产2020观看福利| www.com.av| 国产精品啊啊啊| 欧美中文在线观看| 国产精品xxxxxx| 国产又粗又猛又爽又黄91精品| 91精品国产高清久久久久久91裸体 | 色一情一乱一伦一区二区三区日本| 成人精品国产亚洲| 日韩一区二区不卡| 亚洲国产精品成人综合久久久| 亚洲资源网你懂的| 日韩视频永久免费观看| 欧美日韩国产精品综合 | 日韩精品在线观看网站| 久久精品—区二区三区舞蹈| 水蜜桃久久夜色精品一区| 欧美高清自拍一区| 亚洲午夜无码久久久久| 国产一区二区美女诱惑| 国产美女精品久久久| 欧美日韩伦理片| 亚洲三级在线播放| 高清欧美精品xxxxx| 小早川怜子影音先锋在线观看| 制服丝袜亚洲精品中文字幕| 色姑娘综合天天| 亚洲成人一品| 久久久999国产| 91精品国产综合久久久蜜臀九色| 精品制服美女丁香| 久久久久久99| 性欧美1819sex性高清大胸| 日本韩国一区二区| 久久久久亚洲av成人网人人软件| 精品一区三区| 欧美激情久久久久久| 无码无套少妇毛多18pxxxx| 国内精品写真在线观看| 免费毛片一区二区三区久久久| 黄色小网站在线观看| 欧美性开放视频| av不卡中文字幕| 99久久夜色精品国产亚洲96| 国产91精品青草社区| 国产黄a三级三级看三级| 国产人伦精品一区二区| 国产91xxx| 永久免费精品视频| 久久精品久久久久| 国产精品自拍第一页| 国产精品中文字幕日韩精品 | 亚洲 国产 日韩 欧美| 成人自拍视频在线观看| 中文字幕一区二区三区最新| 中文字幕av一区二区三区佐山爱| 亚洲国产精品久久久久| 激情四射综合网| 国产精品系列在线观看| 午夜精品一区二区在线观看| 黄色在线观看www| 精品动漫一区二区三区在线观看| 色婷婷在线视频观看| 日本欧美大码aⅴ在线播放| 欧美精品一区二区三区久久| 国产乱码午夜在线视频| 亚洲精品一区二区三区蜜桃下载| 韩国一级黄色录像| 蜜桃久久久久久| 欧美一区二区视频17c| 91豆花视频在线播放| 亚洲大胆人体在线| 日本免费观看视| 成人精品高清在线| 成人午夜精品久久久久久久蜜臀| 少妇精品在线| 欧美老女人性视频| 丰满人妻妇伦又伦精品国产| 亚洲一卡二卡三卡四卡无卡久久| 中文字幕在线播放一区二区| 欧美一区二区| 18成人免费观看网站下载| bestiality新另类大全| 日韩女优制服丝袜电影| 久久久无码精品亚洲国产| 粉嫩绯色av一区二区在线观看| www.好吊操| 欧美日韩夜夜| 国产精品v日韩精品| eeuss影院www在线观看| 欧美理论电影在线| 视频这里只有精品| 成人一区在线观看| 国产精品igao激情视频| 涩涩屋成人免费视频软件| 久久成人人人人精品欧| 亚洲国产精彩视频| 亚洲成人福利片| 右手影院亚洲欧美| 日韩精品国产精品| 最近中文字幕免费mv| 视频精品一区| 欧美一级黑人aaaaaaa做受| 精品无人乱码| 91精品黄色片免费大全| 日本在线视频免费| 国产亚洲欧美一级| 天天干天天色天天干| 一区三区视频| 日韩av一区二区三区美女毛片| 色综合一区二区日本韩国亚洲| 久久久久久久久久久免费 | 亚洲资源在线网| 91精品尤物| 国产精品aaaa| 日韩另类在线| 国产一区二区三区在线播放免费观看| 国产乱色精品成人免费视频| 亚洲18女电影在线观看| 伊人影院综合网| 波波电影院一区二区三区| 国产福利影院在线观看| 国自产拍偷拍福利精品免费一| 欧美美乳视频网站在线观看| www.欧美视频| 久久频这里精品99香蕉| 免费资源在线观看| 在线成人小视频| 日韩精品――中文字幕| 国产精品久久久久久久久久久免费看| 亚洲av毛片在线观看| 国产精品一二| 妞干网在线播放| 欧美另类69xxxxx| 国产一区二区三区四区hd| 日韩在线激情| 国产精品第一第二| 888av在线视频| 久久综合免费视频| 东凛在线观看| 亚洲精品国产欧美| www.天堂av.com| 在线免费观看日本欧美| jizz国产免费| 日韩毛片一二三区| 最近中文字幕无免费| 成人免费福利片| 午夜影院免费版| 激情综合亚洲精品| 黑人粗进入欧美aaaaa| 亚洲综合日本| 日韩精品 欧美| 国产精品国码视频| www.-级毛片线天内射视视| 欧美日韩一二| 蜜桃视频成人| 香蕉久久精品| 精品久久久久久中文字幕动漫| 欧美a级大片在线| 成人黄色av播放免费| 日韩成人影音| 2019国产精品自在线拍国产不卡| 国产视频一区二区| 亚洲品质视频自拍网| 日韩电影在线观看完整版| 亚洲国内精品视频| 天堂在线视频免费| 亚洲精品一区二区三区99| 亚洲精品一区二区三区不卡| 欧美一级片免费看| 精品国产亚洲一区二区麻豆| 欧美高清视频一二三区 | 国模娜娜一区二区三区| 能看的毛片网站| 日韩av午夜在线观看| 色一情一乱一伦一区二区三区日本| 三级亚洲高清视频| 成人免费在线观看视频网站| 人人精品人人爱| 午夜视频在线网站| 国产精品一区专区| 日本人妻一区二区三区| jlzzjlzz亚洲日本少妇| 亚洲成人日韩在线| 国产欧美日韩一区二区三区在线观看 | 久久国产精品99久久久久久丝袜| 精品自拍偷拍| 日本成人黄色| 97精品国产福利一区二区三区| 在线看视频不卡| 欧美日本二区| 无码人妻精品一区二区蜜桃网站| 亚洲区欧美区| 欧美黄色一级片视频| 免费人成精品欧美精品| 波多野结衣网页| 久久蜜桃av一区二区天堂| 魔女鞋交玉足榨精调教| 国产精品免费网站在线观看| 国产探花在线免费观看| 精品国产成人在线| 中文字幕一区二区三区免费看| 这里是久久伊人| 无码国产精品一区二区色情男同 | 亚洲激情成人在线| 日韩 欧美 综合| 欧美日本韩国一区二区三区视频 | 精品视频第一区| 日韩精品不卡一区二区| 国产美女永久无遮挡| 美女爽到呻吟久久久久| 国产三级三级三级看三级| 国产宾馆实践打屁股91| 色欲狠狠躁天天躁无码中文字幕| 亚洲精品成人在线| 国产寡妇亲子伦一区二区三区四区| 5858s免费视频成人| 天堂中文资源在线| 久久视频精品在线| 欧美成人免费电影| 99精品国产高清在线观看| 国产日韩视频在线| 无码日本精品xxxxxxxxx| 毛片一区二区三区| 三级男人添奶爽爽爽视频| 国产精品传媒入口麻豆| 久久精品美女视频| 在线影视一区二区三区| 欧美视频在线观看一区二区三区| 色老头一区二区三区| 国产中文在线播放| 51蜜桃传媒精品一区二区| 清纯唯美日韩| 国产淫片免费看| 国产91精品露脸国语对白| 免费观看特级毛片| 色噜噜偷拍精品综合在线| 成人精品在线播放| 麻豆乱码国产一区二区三区 | 午夜av免费在线观看| 欧美成人第一页| 亚洲综合视频| 亚洲综合首页| 免费国产亚洲视频| 六月婷婷七月丁香| 精品日本高清在线播放| 国产特黄一级片| 久久国产精品网站| 一区二区三区| 永久久久久久| 麻豆精品一区二区av白丝在线| 一级黄色片网址| 欧美亚一区二区| 国产高清美女一级毛片久久| 欧美激情2020午夜免费观看| 国产精品美女久久久久人| 9999在线观看| 黑人精品欧美一区二区蜜桃| 国产3级在线观看| 欧美日韩国产免费一区二区| 欧美婷婷久久五月精品三区| 97在线视频免费| 亚洲一区二区电影| 国产精品无码电影在线观看| 国产一区二区三区久久悠悠色av| 蜜臀av午夜精品久久| 884aa四虎影成人精品一区| 国产视频在线播放| av一区二区在线看| 在线观看的日韩av| 三级视频网站在线观看| 欧美日韩精品二区| 日韩电影网址| 777午夜精品福利在线观看| 曰本一区二区三区视频| 国产综合免费视频| 中文字幕av不卡| 国产又大又黄又爽| 欧美老女人在线视频| 国产精品男女| 日韩欧美在线播放视频| 国产欧美日韩一区二区三区在线观看| 一区二区视频在线免费观看| 日韩亚洲一区二区| 日韩福利在线观看| 很污的网站在线观看| 91美女在线观看| 在线播放精品视频| 欧美精品一区二区三区国产精品| 成人51免费| 黄色国产一级视频| 欧美国产亚洲另类动漫| 国产又粗又黄又爽| 久久人91精品久久久久久不卡| 私拍精品福利视频在线一区| 亚洲第一狼人区| 综合久久国产九一剧情麻豆| 手机在线观看毛片| 国产精品久久久久久久久男 | 9l视频自拍9l视频自拍|