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

10個實用的但偏執(zhí)的Java編程技術(shù)

開發(fā) 后端 開發(fā)工具
在沉浸于編碼一段時間以后(比如說我已經(jīng)投入近20年左右的時間在程序上了),你會漸漸對這些東西習以為常。因為,你知道的……

在沉浸于編碼一段時間以后(比如說我已經(jīng)投入近20年左右的時間在程序上了),你會漸漸對這些東西習以為常。因為,你知道的……

任何事情有可能出錯,沒錯,的確如此。

這就是為什么我們要采用“防御性編程”,即一些偏執(zhí)習慣的原因。下面是我個人認為的10個最有用但偏執(zhí)的Java編程技術(shù)。一起來看一看吧:

1.將String字符串放在最前面

為了防止偶發(fā)性的NullPointerException 異常,我們通常將String放置在equals()函數(shù)的左邊來實現(xiàn)字符串比較,如下代碼:

  1. // Bad 
  2. if (variable.equals("literal")) { ... } 
  3. // Good 
  4. if ("literal".equals(variable)) { ... } 

這是隨便用腦子想想就可以做的事,從Bad版本的代碼改寫表達式到Good版本的代碼,這中間并不會丟失任何東西。歡迎不同的觀點…

2.不要相信早期的JDK API

在Java早期,編程是一件非常痛苦的事情。那些API仍然很不成熟,也許你已經(jīng)碰到過下面的代碼塊:

  1. String[] files = file.list(); 
  2. // Watch out 
  3. if (files != null) { 
  4.     for (int i = 0; i < files.length; i++) { 
  5.         ... 
  6.     } 

看上去很偏執(zhí)?也許吧,但請看Javadoc:

如果這個虛擬路徑不表示一個文件夾目錄,則此方法返回null。否則將會返回一個字符串數(shù)組,每一個字符串表示目錄中的文件或文件夾。

對,沒錯。我們可以添加一些校驗:

  1. if (file.isDirectory()) { 
  2.     String[] files = file.list(); 
  3.     // Watch out 
  4.     if (files != null) { 
  5.         for (int i = 0; i < files.length; i++) { 
  6.             ... 
  7.         } 
  8.     } 

3.不要相信“-1”

我知道這是偏執(zhí)的,但Javadoc中對 String.indexOf()方法明確指出:對象內(nèi)***次出現(xiàn)指定字符的位置索引,如果為-1則表示該字符不在字符序列中。

所以使用-1是理所當然的,對嗎?我說不對,請看以下代碼:

  1. // Bad 
  2. if (string.indexOf(character) != -1) { ... } 
  3. // Good 
  4. if (string.indexOf(character) >= 0) { ... } 

誰知道呢。也許到時候他們改變了編碼方式,對字符串并不區(qū)分大小寫,也許更好的方式是返回-2?誰知道呢。

4.避免意外賦值

是的。這種事情也許經(jīng)常會發(fā)生。

  1. // Ooops 
  2. if (variable = 5) { ... } 
  3. // Better (because causes an error) 
  4. if (5 = variable) { ... } 
  5. // Intent (remember. Paranoid JavaScript: ===) 
  6. if (5 === variable) { ... } 

所以你可以將比較常量放置在左側(cè),這樣就不會發(fā)生意外賦值的錯誤了。

5.檢查Null和Length

無論如何,只要你有一個集合、數(shù)組等,請確保它存在,并且不為空。

  1. // Bad 
  2. if (array.length > 0) { ... } 
  3. // Good 
  4. if (array != null && array.length > 0) { ... } 

你并不知道這些數(shù)組從哪里來,也許是來自早期版本的JDK API,誰知道呢。

6.所有的方法都是final的

你也許會告訴我你的開/閉原則,但這都是胡說八道。我不相信你(正確繼承我這個父類的所有子類),我也不相信我自己(不小心繼承我這個父類的所有子類)。所以對于那些意義明確的方法要嚴格用final標識。

  1. // Bad 
  2. public void boom() { ... } 
  3. // Good. Don't touch. 
  4. public final void dontTouch() { ... } 

7.所有變量和參數(shù)都是final

就像我說的。我不相信我自己(不要意外覆蓋我的值)。話雖如此,我不相信我自己的是因為…

…這就是為什么所有的變量和參數(shù)都是final的原因。

  1. // Bad 
  2. void input(String importantMessage) { 
  3.     String answer = "..."
  4.     answer = importantMessage = "LOL accident"
  5. // Good 
  6. final void input(final String importantMessage) { 
  7.     final String answer = "..."

8.重載時不要相信泛型

是,它可以發(fā)生。你相信你寫的超級好看的API,它很直觀,隨之而來的,一些用戶誰只是將原始類型轉(zhuǎn)換成Object類型,直到那該死的編譯器停止發(fā)牢騷,并且突然他們會鏈接錯誤的方法,以為這是你的錯誤。

看下面的代碼:

  1. // Bad 
  2. <T> void bad(T value) { 
  3.     bad(Collections.singletonList(value)); 
  4. <T> void bad(List<T> values) { 
  5.     ... 
  6. // Good 
  7. final <T> void good(final T value) { 
  8.     if (value instanceof List) 
  9.         good((List<?>) value); 
  10.     else 
  11.         good(Collections.singletonList(value)); 
  12. final <T> void good(final List<T> values) { 
  13.     ... 

因為,你知道……你的用戶,他們就像

  1. // This library sucks 
  2. @SuppressWarnings("all"
  3. Object t = (Object) (List) Arrays.asList("abc"); 
  4. bad(t); 

相信我。這一切我都看到過。包括下面的

這種偏執(zhí)還是不錯的。

9.總是在Switch語句的Default中拋出異常

Switch語句……它們其中一個可笑的語句我不知道該對它敬畏還是哭泣,但無論如何,既然我們堅持用switch,那我們不妨將它用得***,看下面的代碼:

  1. // Bad 
  2. switch (value) { 
  3.     case 1: foo(); break
  4.     case 2: bar(); break
  5. // Good 
  6. switch (value) { 
  7.     case 1: foo(); break
  8.     case 2: bar(); break
  9.     default
  10.         throw new ThreadDeath("That'll teach them"); 

當value == 3時,將會出現(xiàn)無法找到的提示,而不會讓人不知所謂。

10.Switch語句帶花括號

事實上,switch是最邪惡的語句,像是一些喝醉了或者賭輸了的人在寫代碼一樣,看下面的例子:

  1. // Bad, doesn't compile 
  2. switch (value) { 
  3.     case 1int j = 1break
  4.     case 2int j = 2break
  5. // Good 
  6. switch (value) { 
  7.     case 1: { 
  8.         final int j = 1
  9.         break
  10.     } 
  11.     case 2: { 
  12.         final int j = 2
  13.         break
  14.     } 
  15.     // Remember: 
  16.     default
  17.         throw new ThreadDeath("That'll teach them"); 

在switch語句中,每一個case語句的范圍只有一行語句,事實上,這些case語句甚至不是真正的語句,他們就像goto語句中的跳轉(zhuǎn)標記一樣。

結(jié)論

偏執(zhí)編程看起來似乎不可思議,有時,因為代碼經(jīng)常被證明是更詳細一點,但并不是需求需要。你可能會想,“哦,這是絕不會發(fā)生的”,但正如我所說。經(jīng)過20年左右的時間編程,你不希望只修復這些愚蠢的bug,因為編程語言是如此的陳舊的和有缺陷的。因為你知道…

現(xiàn)在到你了!什么是你在編程最偏執(zhí)的怪癖?

譯文鏈接:http://www.codeceo.com/article/10-useful-paranoid-java-coding.html
英文原文:Top 10 Useful, Yet Paranoid, Java Programmer Techniques

 

責任編輯:王雪燕 來源: 碼農(nóng)網(wǎng)
相關推薦

2015-08-31 10:46:05

java實用編程技術(shù)

2017-02-10 08:59:14

程序員

2011-07-15 10:27:21

PHP

2009-06-14 21:18:02

Java編程漢字問題

2011-10-09 08:58:11

程序員

2018-01-02 11:15:27

網(wǎng)絡芯片應用

2011-06-15 16:36:27

Qt 圖形

2015-04-16 13:02:50

程序員編程選擇編程技術(shù)書

2021-03-15 08:13:19

JavaScript開發(fā)代碼

2020-03-04 14:28:40

編程語言PythonJava

2024-05-06 12:35:26

C#編程遞歸

2025-07-15 09:18:20

2022-12-01 16:53:27

NPM技巧

2020-05-29 15:45:39

Windows 10Windows微軟

2017-01-06 15:09:13

編程訣竅

2021-05-21 10:48:34

新華三

2023-10-26 18:03:14

索引Python技巧

2011-07-07 10:35:53

htaccess

2014-03-17 17:27:51

Linux mvLinux 命令

2015-10-08 08:53:46

PHP代碼片段
點贊
收藏

51CTO技術(shù)棧公眾號

青青青视频在线免费观看| 97公开免费视频| 隣の若妻さん波多野结衣| 亚洲高清在线| 亚洲天堂男人天堂| 中文字幕12页| 日本不良网站在线观看| 国产精品青草综合久久久久99| 成人动漫网站在线观看| 好吊操这里只有精品| 欧美老女人另类| 日韩精品中文字幕一区| 男女曰b免费视频| 超碰在线无需免费| 91丨九色丨黑人外教| 国产欧美一区二区白浆黑人| 国产午夜精品一区二区理论影院| 精品国产一区二区三区久久久樱花| 欧美一区二区二区| www.超碰com| gogo高清在线播放免费| 中文字幕欧美国产| 国产一区自拍视频| a级片在线播放| 日韩精品每日更新| 久久人91精品久久久久久不卡| 国产99在线 | 亚洲| 久久精品色播| 欧美一级精品在线| 成人亚洲精品777777大片| www视频在线观看| 亚洲男女毛片无遮挡| 亚洲精品一区二区三| 污污视频在线观看网站| 国产999精品久久| 成人写真视频福利网| 丁香社区五月天| 国产精品婷婷| 欧美日韩国产va另类| 自拍偷拍第9页| 国产一区二区三区91| 欧美精品一区二区久久婷婷| 黄色a级三级三级三级| 91伊人久久| 色999日韩国产欧美一区二区| 老子影院午夜伦不卡大全| 18加网站在线| 亚洲男女一区二区三区| 天天综合五月天| 毛片激情在线观看| 国产精品理伦片| 日韩高清在线播放| 国产1区2区3区在线| 久久久99免费| 日韩激情视频| av免费在线一区二区三区| 久久综合九色综合欧美亚洲| 精品久久一区二区三区蜜桃| 蜜桃久久一区二区三区| 不卡一区中文字幕| 精品国产一二| 婷婷av一区二区三区| 波多野结衣在线一区| 国产一区免费| 欧美套图亚洲一区| 国产欧美日本一区视频| 亚洲图片小说在线| 黄视频在线观看网站| 亚洲人妖av一区二区| 麻豆传媒网站在线观看| 毛片在线网址| 精品久久久久久久久久久| 男人操女人免费软件| 亚州一区二区三区| 5566中文字幕一区二区电影 | 黄色在线免费| 亚洲精品伦理在线| 浮妇高潮喷白浆视频| 自拍偷拍欧美视频| 欧美日韩国产一级| 在线播放国产视频| 偷拍自拍一区| 中文字幕成人精品久久不卡 | 亚洲一区二区三区影院| 久久国产精品网| 成人黄色免费短视频| 欧美日韩在线三区| 中国老熟女重囗味hdxx| 免费成人三级| 日韩在线免费观看视频| 久久久久久久福利| 久久免费高清| 亚洲综合社区网| 神马一区二区三区| 中文字幕日韩欧美一区二区三区| 真实国产乱子伦对白视频| 深夜av在线| 欧美日韩三级视频| 99精品一区二区三区无码吞精| 国产精品免费大片| 精品视频9999| 日韩综合在线观看| 国产精品69毛片高清亚洲| 六月婷婷久久| 午夜小视频在线观看| 欧美日韩中文字幕在线| 极品粉嫩美女露脸啪啪| 亚洲涩涩av| 欧美大片在线看免费观看| 青青视频在线免费观看| 国产传媒日韩欧美成人| 日韩欧美一区二区三区四区五区| 色操视频在线| 欧美精品在线观看播放| 右手影院亚洲欧美| 午夜日本精品| 国产欧美中文字幕| 欧洲一级在线观看| 亚洲一区欧美一区| 久久久久久蜜桃一区二区| 牛牛影视久久网| 欧美精品免费在线| 亚洲一区二区影视| 久久只精品国产| 美女黄色免费看| 日本一区二区中文字幕| 亚洲欧美日韩久久久久久| 免费网站看av| 久久爱另类一区二区小说| 免费看成人av| 国产99在线观看| 日韩欧美国产麻豆| 国产成人综合在线视频| 麻豆精品久久久| 欧美精品一区二区三区久久| av福利导福航大全在线| 日韩欧美亚洲另类制服综合在线 | 国产欧美日韩影院| 日本不卡高字幕在线2019| 五月婷婷深深爱| 亚洲男同性恋视频| 手机av在线网站| 91精品观看| 成人久久久久久| 日本在线免费| 欧美精品三级在线观看| 亚洲黄色网址大全| 久久精品国产网站| 亚洲欧洲另类精品久久综合| 福利视频一区| 综合网中文字幕| 中文天堂在线播放| 国产精品乱码妇女bbbb| 天堂av2020| 欧美.日韩.国产.一区.二区| 亚洲在线免费视频| 女人天堂av在线播放| 日韩欧美精品在线视频| 久久网免费视频| 成人美女在线观看| av免费观看大全| 免费久久久久久久久| 日韩av手机在线观看| 成人在线免费电影| 欧美日韩一区二区在线观看 | 亚洲视频在线观看三级| 原创真实夫妻啪啪av| 国语精品一区| 久久久精品动漫| 香蕉成人av| 少妇高潮 亚洲精品| 国产裸体无遮挡| 亚洲一区二区三区自拍| 欧美无人区码suv| 玖玖在线精品| 一本一本a久久| 美国十次综合久久| 91av视频在线播放| 8888四色奇米在线观看| 欧美一区二区三区的| 欧美福利视频一区二区| 国产欧美一区二区三区鸳鸯浴 | 亚洲三区视频| 一区二区在线免费播放| 欧美性资源免费| 一广人看www在线观看免费视频| 日韩一级大片在线观看| 一区二区三区视频免费看| 国产欧美一区二区精品性| 欧美视频国产视频| 亚洲一级一区| 日韩在线电影一区| 伊人久久大香线蕉av超碰| 国产福利视频一区| 日本欧美电影在线观看| 亚洲偷熟乱区亚洲香蕉av| 国产视频一区二区三| 狠狠做深爱婷婷久久综合一区| 一级二级黄色片| 成人的网站免费观看| 欧美伦理片在线观看| 在线精品观看| 中文字幕av导航| 欧美人妖在线观看| 成人免费激情视频| 日韩大片欧美大片| 久久久久久久国产精品| 在线看av的网址| 日韩久久精品电影| 国产sm主人调教女m视频| 色老头久久综合| 青青草国产在线观看| 欧美国产精品v| 熟妇人妻久久中文字幕| 国产最新精品精品你懂的| 六月婷婷在线视频| 欧美一区在线看| 亚洲欧洲三级| 亚洲视频分类| 精品毛片久久久久久| 视频国产精品| 成人a级免费视频| 青青热久免费精品视频在线18| 久久免费精品日本久久中文字幕| 免费黄色网页在线观看| 亚洲一区二区久久| 欧美孕妇孕交| 亚洲国产天堂久久综合| 亚洲国产精品二区| 91精品国产欧美一区二区18| 一区二区视频免费观看| 色久综合一二码| 日本学生初尝黑人巨免费视频| 亚洲天堂av老司机| 成人做爰视频网站| 国产精品私人自拍| 国产人妻大战黑人20p| 91老师片黄在线观看| 7788色淫网站小说| av男人天堂一区| 星空大象在线观看免费播放| 国产成人av一区二区三区在线| 污片在线免费看| 美腿丝袜亚洲三区| 中文字幕在线综合| 精品一区免费av| av噜噜在线观看| 国内精品写真在线观看| 国产探花在线观看视频| 狠狠色综合日日| 波多野结衣在线免费观看| 国产一区二区在线观看视频| 欧美熟妇另类久久久久久多毛| 精彩视频一区二区| 亚洲一区二区偷拍| 国产不卡在线一区| 亚洲熟女一区二区| 91伊人久久大香线蕉| 在线免费观看成年人视频| 久久伊人中文字幕| 亚洲黄色小说视频| 中文字幕精品三区| 国产美女高潮视频| 亚洲精品视频在线看| 久久免费小视频| 偷窥少妇高潮呻吟av久久免费| 日韩精品手机在线| 色天使色偷偷av一区二区| 夜夜嗨aⅴ一区二区三区| 欧美日韩激情一区| 国产黄色高清视频| 日韩精品www| 国产在线黄色| 精品国产依人香蕉在线精品| 怡红院在线观看| 91精品国产成人www| 精品无人乱码一区二区三区| 成人免费在线网址| 久9re热视频这里只有精品| 欧美自拍资源在线| 亚洲精品国产首次亮相| 18禁网站免费无遮挡无码中文| 日韩精品免费视频人成| 激情成人在线观看| 99精品视频一区| 成年人看的免费视频| 亚洲一区精品在线| jizz国产在线| 日韩免费高清视频| 岛国在线视频免费看| 欧美乱妇高清无乱码| 全亚洲第一av番号网站| yellow视频在线观看一区二区| 免费av一区| 一级性生活视频| 久久婷婷久久| 女人扒开双腿让男人捅 | 久草在线视频网站| 国产精品久久久久久久午夜 | 欧美一区二区三区在线| 青梅竹马是消防员在线| 久久国产精品99国产精| 91精品xxx在线观看| 懂色av一区二区三区在线播放| 久久成人高清| 久久久久久人妻一区二区三区| 美腿丝袜亚洲三区| 欧美熟妇精品黑人巨大一二三区| 国产精品第一页第二页第三页| 黄色小说在线观看视频| 欧美二区在线观看| 免费成人av电影| 久久久久久久久久久人体| 九九久久国产| 欧美日韩精品一区| 亚洲福利免费| 91精产国品一二三产区别沈先生| 国产三级三级三级精品8ⅰ区| 久热这里只有精品在线| 制服丝袜在线91| av在线三区| 国产精品成人av在线| 久久夜色电影| 阿v天堂2018| 国产一区二区看久久| 天堂网中文在线观看| 一本大道久久a久久精品综合| 少妇人妻精品一区二区三区| 久久99久久99精品中文字幕| 日韩av懂色| 一本一本a久久| 青青草97国产精品免费观看无弹窗版 | 日本午夜精品一区二区三区| 亚洲精品系列| 又黄又爽的网站| 亚洲成av人影院在线观看网| www.精品久久| 九色精品美女在线| 久久精品九色| dy888午夜| 精品无码三级在线观看视频| 中文字幕乱码av| 欧美日韩不卡在线| 麻豆传媒在线免费| 国产精品久久久久9999| 黑丝美女一区二区| chinese少妇国语对白| 久久久蜜桃精品| 区一区二在线观看| 国产一级揄自揄精品视频| 亚洲成人看片| 亚洲国产精品综合| 久久99久久精品欧美| 人人艹在线视频| 欧美一区二区三区性视频| 最新日本在线观看| 国产视频精品网| 国产精品久久久久久模特| theav精尽人亡av| 91福利在线看| 欧美成人性生活视频| 亚洲综合精品一区二区| 黄色成人在线网站| 亚洲天堂视频一区| 欧美日韩中文字幕一区| a级影片在线| 国产精品一区二区三区免费观看| 99精品国产在热久久下载| 黄色正能量网站| 欧美视频一区二区三区四区| 久久黄色美女电影| 国产精品国产一区二区| 国产日韩精品视频一区二区三区 | 亚洲天天做日日做天天谢日日欢| 精品国自产在线观看| 91精品国产色综合| 精品大片一区二区| 欧美视频国产视频| 午夜精品福利久久久| 国产高清视频免费最新在线| 成人性生交大片免费观看嘿嘿视频| 激情亚洲网站| 欧美性猛交xxxx乱| 日韩一级高清毛片| 欧美粗大gay| 在线观看成人免费| 91丨九色丨黑人外教| 国产美女免费视频| 欧美亚洲伦理www| 久久精品欧美一区| 在线精品一区二区三区| 欧美日韩在线直播| 成人三级高清视频在线看| 性刺激综合网| www.亚洲免费av| 一区二区日韩在线观看| 97超级碰碰人国产在线观看| 久久在线电影| 91黄色免费视频| 日韩亚洲欧美一区二区三区|