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

阿里Java架構師教你寫代碼-如何校驗參數?

開發 前端
本篇教你寫代碼-如何校驗參數?理解參數校驗的意義和運用。

[[348391]]

 1 參數校驗的意義

 

大多數方法會限制傳遞給它們的參數值。常見的比如,索引值非負,引用非空。作為優雅的開發者,應做到:

  1. 在Java Doc中清楚地記錄這些限制,并在方法體開頭校驗
  2. 在錯誤發生后盡快找到。若不這樣做,就不太可能檢測到錯誤,而且即使檢測到錯誤,確定其源頭也很難

若一個無效參數被傳遞給一個方法,若該方法

  1. 校驗參數,方法將迅速失敗,并拋異常
  2. 未校驗參數,可能會在方法執行過程中發生如下情形:
  • 莫名其妙的異常而失敗
  • 正常返回,但會暗中計算錯誤結果
  • 正常返回,但會使某對象處于隱患狀態,可能在未來某不確定時間在某不相關代碼點報錯。

總之,若不校驗參數,可能會違反失敗原子性。

對public、protected方法,要在方法說明使用 Javadoc 的 @throws 標簽說明,若違反參數值限制時會拋出的異常。通常為 IllegalArgumentException、IndexOutOfBoundsException 或 NullPointerException。一旦在文檔中記錄了參數限制,并且記錄違反這些限制將引發的異常,強加這些限制就很簡單了。

看案例:

文檔注釋并沒說「若 m 為空,mod 將拋NPE」,然而方法確實做了,只是作為調用 m.signum() 的副產物。該異常記錄在外圍 BigInterger 類級別的文檔注釋。類級別注釋適用于類的所有public方法中的所有參數。可以避免在每個方法上分別記錄每個 NullPointerException 而造成雜糅。
可與 @Nullable 或類似注解協作,指示某參數可能為 null,但這種做法并非標準,而且使用了多個注解。

2 最佳實踐

 

Java 7 提供 Objects.requireNonNull 不再需手動執行空檢查。

如果愿意,還可自定義異常詳情。該方法返回其輸入,所以使用一個值的同時可執行判空:

  1. // Java 內置的判空功能 
  2. this.strategy = Objects.requireNonNull(strategy, "strategy"); 

也可以忽略返回值并使用 Objects.requireNonNull 作為一個獨立判空方法。

3 邊界檢查

 

在 Java 9 中,邊界檢查功能被添加到 java.util.Objects。該功能由三個方法組成:

checkFromIndexSize

checkFromToIndex

checkIndex

該套工具不如判空方法靈活。它不允許自定義異常詳細信息,僅適用于 List 和數組索引,且不處理封閉范圍(包含兩個端點)。

4 斷言

 

對于未暴露的方法,作為包開發者,你應該控制方法在何時能被調用,因此你可以并且也應該確保只傳入有效參數值。因此,非public方法可使用斷言檢查入參:

 

從本質上說,這些斷言是在聲稱被斷言的條件為 true,而不管客戶端如何調用。與普通校驗不同的是:

 

  • 若斷言失敗,會拋 AssertionError
  • 若斷言沒有作用,本質上不存在成本,除非通過將 -ea或 -enableassertion標識傳遞給 java 命令來啟用它們

 

 

靜態工廠方法

 

尤其應檢查那些尚未由方法調用,而是存起供日后使用的參數的有效性。例如靜態工廠方法,它接受 int 數組并返回數組的 List 視圖。若客戶端傳入 null,將拋 NullPointerException,因為該方法具有顯式檢查(調用 Objects.requireNonNull)。如果省略檢查,該將返回對新創建的 List 實例的引用,該實例將在客戶端試圖使用它時拋出 NullPointerException。到那時,List 實例的起源很難確定,使調試變得復雜。
構造器就是一種特殊情況。務必檢查構造器入參有效性,避免構造生成實例對象時,違背對象的不變性。

 

例外

 

在執行方法前,應顯式檢查參數,也有例外 - 有效性檢查成本較高或不切實際,或檢查在計算過程中隱式執行了。
例如,一個為對象 List 排序的方法,比如 Collections.sort(List)。List 中的所有對象必須相互比較。在對 List 排序的過程中,List 中的每個對象都會與列表中的其他對象進行比較。如果對象不能相互比較,將拋出 ClassCastException,這正是 sort 方法應該做的。因此,沒有必要預先檢查列表中的元素是否具有可比性。但不加區別地依賴隱式有效性檢查可能導致失敗原子性的丟失。

有時,計算任務會隱式地執行所需的有效性檢查,但如果檢查失敗,則拋出錯誤的異常。即計算任務由于無效參數值所拋異常,與文檔中記錄的方法要拋出的異常不匹配。此時應該使用異常轉換將計算任務拋出的異常轉換為正確的異常。

5 總結

 

請勿從本文自以為對參數的限制永遠都是好事。我們追求的是通用又實用的方法設計。若該方法可對它所接受的所有參數值進行合理的處理,那么對參數所加限制越少越好。

建議你每次編寫方法前,考慮清楚參數存在哪些限制。在文檔中記錄這些限制并在方法主體的開頭顯式檢查。養成這樣的習慣!這一少量工作將在校驗出現失敗時給你一片春光!

參考

《阿里 Java 開發手冊》

《重構》

《Effective Java》

 

責任編輯:姜華 來源: JavaEdge
相關推薦

2019-02-22 10:00:45

Java開發代碼

2016-12-22 23:55:40

架構師代碼技術

2020-10-26 11:41:47

kill代碼

2020-11-03 09:10:18

JUC-Future

2021-02-01 07:40:55

架構師阿里技專家

2019-07-22 22:22:02

架構運維技術

2020-06-28 08:34:07

架構師阿里軟件

2020-01-16 15:35:00

高并發架構服務器

2019-07-31 07:36:12

架構運維技術

2019-10-31 09:52:03

Android代碼規范

2009-02-26 16:32:58

SaaS開發SaaS應用Open API

2019-08-22 10:54:05

分布式系統架構

2011-04-07 16:20:24

軟件架構師架構師架構

2021-06-07 09:35:11

架構運維技術

2020-07-21 08:00:44

架構師BAT線程

2018-07-03 15:46:24

Java架構師源碼

2021-02-25 11:30:17

代碼開發技術

2017-09-16 18:29:00

代碼數據庫線程

2015-08-12 10:10:44

2012-08-04 16:02:00

架構師
點贊
收藏

51CTO技術棧公眾號

日本韩国欧美在线| 成人黄色大片在线观看| www.xxxx精品| 国产精品日日摸夜夜爽| 色在线视频观看| 中文字幕国产一区二区| 97人摸人人澡人人人超一碰| 国产一级二级毛片| 免费视频国产一区| 正在播放亚洲一区| 日韩欧美一区二| 日本黄色片在线观看| 东方欧美亚洲色图在线| 国产精彩精品视频| 久久久久久久久久久久久久免费看| 国产精品主播在线观看| 欧美综合亚洲图片综合区| 男人的天堂视频在线| 三级在线播放| 国产精品主播直播| 国产经典一区二区| 免费在线观看黄网站| 99热在线成人| 国产亚洲视频在线观看| 香蕉视频在线观看黄| 丝袜美腿一区| 午夜视频在线观看一区二区| 黄色www在线观看| 噜噜噜噜噜在线视频| 国产91精品精华液一区二区三区| 国产精品欧美一区二区三区奶水| 日本三级黄色大片| 永久亚洲成a人片777777| 亚洲最新中文字幕| 黄色污在线观看| 精品一级视频| 欧美日韩不卡一区| 日本在线观看a| 91老司机福利在线| 亚洲综合色丁香婷婷六月图片| 亚洲一区二区四区| 大胆av不用播放器在线播放| 91亚洲精品一区二区乱码| 99re在线国产| www.成人免费视频| 国产乱子轮精品视频| 国产中文字幕亚洲| 91丨九色丨海角社区| 午夜一级在线看亚洲| 91精品国产91久久久久久久久| 久久精品欧美一区二区| 欧美精选在线| 欧美成人三级视频网站| 极品美妇后花庭翘臀娇吟小说| 日韩免费在线| xxxx欧美18另类的高清| 免费观看特级毛片| 日韩欧美一区二区三区免费看| 国产亚洲视频中文字幕视频| 亚洲做受高潮无遮挡| 天堂99x99es久久精品免费| 亚洲精品一区二区三区99| 老熟女高潮一区二区三区| 91成人入口| 欧美成人女星排名| 国产精品久久久久久亚洲av| caoporn成人| 日韩精品高清在线| wwwwww日本| 欧美丝袜丝交足nylons172| 在线观看国产精品日韩av| 亚洲综合欧美综合| 久久综合99| 久热精品在线视频| 欧美三级在线免费观看| 黄页网站一区| 国产成人精品av| 中文 欧美 日韩| 久草热8精品视频在线观看| 51精品国产人成在线观看| 乱色精品无码一区二区国产盗| av亚洲产国偷v产偷v自拍| 欧美日韩高清免费| 亚洲精品承认| 一区二区免费看| 少妇无码av无码专区在线观看 | 91片黄在线观看喷潮| 久久99日本精品| eeuss一区二区三区| 图片区 小说区 区 亚洲五月| 国产亚洲精品aa午夜观看| 四虎免费在线观看视频| 日本午夜大片a在线观看| 欧美在线免费视屏| 国产精品日日摸夜夜爽| 国产一区二区三区天码| 久久久精品免费视频| 91久久国产视频| 久久国产麻豆精品| 国产精品一区二区三区不卡| 91视频在线观看| 亚洲国产精品综合小说图片区| 国产三区在线视频| 久久9999免费视频| 亚洲欧洲日产国产网站| 男女做暖暖视频| 久久看片网站| 97伦理在线四区| h视频在线免费| 亚洲妇熟xx妇色黄| 亚洲久久中文字幕| 欧美丝袜美腿| 欧美久久精品午夜青青大伊人| 婷婷激情五月网| 国产精品一区二区在线观看不卡| 欧美极品色图| 超碰在线97国产| 欧美日韩亚洲国产综合| 中文字幕av观看| 欧美不卡一区| 国产精品一区二区久久精品| 婷婷丁香一区二区三区| 一区二区三区免费| 污污视频网站在线| 欧美日韩在线观看视频小说| 午夜精品一区二区三区在线视| 国产美女三级无套内谢| 日本一区二区三区国色天香 | av电影院在线看| 欧美电影在线免费观看| 免费观看a级片| 麻豆精品网站| 久久久久资源| 24小时免费看片在线观看| 欧美一区二区精品在线| 日韩精品电影一区二区三区| 老牛国产精品一区的观看方式| 国产精品有限公司| 国产第一页在线| 欧美成人video| 欧美 日韩 国产 一区二区三区| 蜜臀精品久久久久久蜜臀| 秋霞久久久久久一区二区| 蜜桃麻豆影像在线观看| 亚洲精品不卡在线| 日韩欧美一区二区一幕| thepron国产精品| 黄色成人在线看| 加勒比中文字幕精品| 欧美激情一区二区三区在线视频观看 | 9.1片黄在线观看| 日韩不卡免费视频| 五码日韩精品一区二区三区视频| 久久久成人av毛片免费观看| 国产亚洲欧美一区| ,亚洲人成毛片在线播放| 1024亚洲合集| 国产成人强伦免费视频网站| 欧美激情自拍| 国产精品国产一区二区| 超碰97国产精品人人cao| 日韩av在线看| 亚洲av无码精品一区二区| 国产喷白浆一区二区三区| 一区二区三区 日韩| 欧美超碰在线| 91久久爱成人| 美女搞黄视频在线观看| 亚洲欧美日韩中文视频| 中文字幕免费高清在线观看| 中文字幕一区二区三区精华液 | 欧美巨猛xxxx猛交黑人97人| 成 人 黄 色 片 在线播放| 性做久久久久久久免费看| 99re久久精品国产| 日本aⅴ免费视频一区二区三区| 一区二区三区欧美在线| 试看120秒一区二区三区| 91国产高清在线| 成人免费在线电影| 日韩一区二区免费视频| 国产精品第9页| 国产欧美一区二区精品性色超碰| 欧美性猛交xxxx乱大交91| 在线观看日韩av电影| 欧美一区二区三区电影在线观看 | 久久久久综合| 亚洲国产精品影视| 久久久久97| 国产精品一区二区3区| 污污的视频在线观看| 亚洲美女av黄| 999久久久久| 色悠悠亚洲一区二区| 黄色a级片在线观看| 91美女在线观看| 久久久久久久高清| 亚洲一区图片| av中文字幕av| 欧美一站二站| 精品国产乱码久久久久久88av | 亚洲成a人片在线不卡一二三区| 久久久午夜精品福利内容| 视频一区视频二区中文| 黄色录像特级片| 精品一区亚洲| 99久久免费国| 国产极品一区| 国产91精品久| av在线免费网址| 亚洲三级 欧美三级| 亚洲毛片在线播放| 欧美日韩一二三| 国产成人亚洲精品自产在线| 日韩一区在线看| 尤物视频最新网址| 不卡大黄网站免费看| 婷婷激情5月天| 久久人人97超碰国产公开结果| av久久久久久| 999精品视频| 欧美性大战久久久久| 懂色av一区二区| 亚洲一区久久久| 成人高清一区| 国产成人精品一区二区三区| 91禁在线看| 久久久久久高潮国产精品视| 欧美激情二区| www.欧美精品| 在线观看av黄网站永久| 亚洲小视频在线| 日本中文字幕电影在线观看 | 日本久久一区二区| 日本三级一区二区| 亚洲国产毛片aaaaa无费看 | 日韩欧美综合在线视频| 国产性生活网站| 一区二区国产视频| 极品颜值美女露脸啪啪| 亚洲人亚洲人成电影网站色| jizzjizz日本少妇| 国产精品国产三级国产aⅴ入口| 中文字幕免费高清| 国产欧美一区二区三区沐欲| 这里只有久久精品| 国产色产综合色产在线视频| 亚洲午夜福利在线观看| 久久嫩草精品久久久精品| 在线观看国产三级| 91蜜桃视频在线| 无码h肉动漫在线观看| 91浏览器在线视频| 久久精品国产亚洲AV熟女| 国产亚洲精品中文字幕| 97热精品视频官网| 性欧美8khd高清极品| 日韩欧美国产一区二区在线播放 | 国产在线精品不卡| 一级黄色免费毛片| 高清在线成人网| 国产精品久久久久久亚洲色| 99久久精品免费观看| 中文字幕xxx| 欧美激情一区在线| 蜜桃视频最新网址| 一区二区三区日韩欧美| 国产精品成人aaaa在线| 日韩欧美黄色动漫| 亚洲特级黄色片| 日韩视频国产视频| 五月色婷婷综合| 亚洲色无码播放| 老司机午夜在线视频| 久久久久久久久网站| 最近高清中文在线字幕在线观看1| 国产精品91一区| 国产精品亚洲欧美一级在线| 国产精品视频在线免费观看| 亚洲精品国产setv| av动漫免费观看| 99热这里只有精品8| 9久久婷婷国产综合精品性色| 国产一区二区三区黄视频 | 性欧美在线看片a免费观看| 国模套图日韩精品一区二区| 国产精品直播网红| 91成人短视频| 亚州欧美一区三区三区在线| 婷婷综合五月| 欧美亚洲一二三区| 黄网站免费久久| 水蜜桃av无码| 中文字幕视频一区二区三区久| 特级片在线观看| 欧洲一区在线观看| 亚洲黄色小说网址| 中文字幕在线视频日韩| а√天堂中文在线资源8| 国产精品欧美激情| 三级小说欧洲区亚洲区| 中文字幕一区综合| 先锋影音久久| 好吊操视频这里只有精品| 日本一区二区免费在线| 国产精品30p| 欧美精品在线视频| 免费一级在线观看| 欧美精品videofree1080p| 国产国产一区| 欧美色图亚洲自拍| 黄色一区二区三区四区| 色18美女社区| 欧美激情中文不卡| 综合激情网五月| 精品国产一区二区三区久久影院| 蜜桃av久久久亚洲精品| 欧美码中文字幕在线| 男人添女荫道口喷水视频| 麻豆精品新av中文字幕| 欧美性xxxx图片| 午夜精品久久久久影视| 99久久国产免费| 久久精品国产亚洲精品| 日本精品在线一区| 欧美日韩在线播放一区二区| 18成人免费观看视频| 91精品人妻一区二区三区四区| 国产精品久久久久久久久晋中 | 国产剧情在线| 国产美女搞久久| 成人3d精品动漫精品一二三| 丰满人妻中伦妇伦精品app| 成人高清视频在线观看| 久久国产一级片| 日韩一区二区免费高清| www免费在线观看| 成人综合网网址| 中文在线日韩| 91av免费观看| 一级精品视频在线观看宜春院| 国产v片在线观看| 欧美日本啪啪无遮挡网站| 无码国模国产在线观看| 国产高清不卡无码视频| 国产另类ts人妖一区二区| 卡通动漫亚洲综合| 欧美成人激情免费网| 国产精品探花在线| 精品免费日产一区一区三区免费| 影院欧美亚洲| 男男做爰猛烈叫床爽爽小说| 精品国产乱码久久久久酒店| 日本高清中文字幕二区在线| 日本国产高清不卡| 久久99久久人婷婷精品综合| 久久精品香蕉视频| 国产精品毛片a∨一区二区三区| 日本三级一区二区三区| 日韩在线小视频| 日韩免费一级| 分分操这里只有精品| 91丨porny丨首页| 91色国产在线| 99精品视频在线观看播放| 亚洲美女性囗交| 亚洲最大色网站| 人妻妺妺窝人体色www聚色窝| 777精品视频| 欧美色图国产精品| 在线免费看污网站| 亚洲国产成人精品视频| 男人天堂亚洲二区| 成人免费视频网址| 亚洲无线视频| 久久精品一区二区免费播放 | 成人黄色一区二区| 中文字幕亚洲综合久久菠萝蜜| a级片在线播放| 97国产精品人人爽人人做| 国产一区二区观看| 午夜福利123| 欧美日韩午夜剧场| 成人在线免费电影| 成人女人免费毛片| 日韩精品乱码av一区二区| 91精品国产闺蜜国产在线闺蜜| 亚洲国产小视频在线观看| 精品三区视频| 久久精品国产sm调教网站演员| 欧美极品aⅴ影院| 成人激情四射网| 国产成人小视频在线观看| 欧美一区二区| 国产综合精品在线| 日韩精品一区二区三区蜜臀| 四虎4545www精品视频| 国产精品igao激情视频| 久久婷婷国产综合精品青草| 国产aⅴ爽av久久久久成人|