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

一篇帶給你如何寫好一個Java類?

開發 前端
在實際的開發過程中,我們一眼就能判斷出來哪些類寫得好,哪些類寫的壞。我們可能不能明確地說出來個所以然,但是就是能感覺出來。

混沌之初

在進行程序開發的過程中,我們有時會看到這樣的Java類:

  • 有上百個公共方法
  • 單個方法好幾百行
  • 整個Java文件幾千行

先下結論,這樣的類顯然是不好的。盡管他勉強能維持當前功能的運行。但實際上它已經無法在進行功能上的擴展了。我們對他能做的只有保守治療,在危樓上再添磚加瓦。

盡管大家都不愿意承認自己是一片混沌的制造者,但實際上每一個巨型類的代碼都是由你我親手或間接締造的。

但是當有一天我們意識到,這個類已經太過巨大,需要進行重構的時候,我們需要一些方法論與準則來幫助我們進行判斷。

好的類是什么樣的

在實際的開發過程中,我們一眼就能判斷出來哪些類寫得好,哪些類寫的壞。我們可能不能明確地說出來個所以然,但是就是能感覺出來。這種原因是:

優秀的類可能精準地展現出它所具備的能力。

在我們進行代碼編寫的時候,無時無刻的會和類打交道。而類與類之間所表達出來的邏輯之間的依賴和交互則是我們要關注的重點。所以,當我們看到一個類時無法輕松的判斷出來它是用于什么功能的,或者一不小心的誤判了它實際的功能的時候,那么這個類就是有問題的。

以下我們針對哪些角度是可以幫助我們判斷一個類是否優秀。

統一順序

我們在進行代碼編寫的時候總是有各種各樣的規范,規范的目的并不是和實際的編碼人員對著干,主要目的在于減少團隊中的溝通成本。所以對于編寫類文件來說,需要做的第一件事就是要統一所有類中內容的排列順序。這樣做有兩個好處:

  1. 減少在編寫文件時候的位置考慮成本。
  2. 減少在閱讀代碼時的理解成本。

顯然我們更加關注的是第二點。具體來說我們要保證類的屬性在一起、類的方法在一起,以便在我們進行代碼閱讀的時候不會錯過關鍵信息(我們更多的時候是簡單瀏覽一下類的全貌,然后就徑直的去找我們關注的內容)。同時一般來說,我們按照以下順序來編寫類:

  1. 公共靜態常量
  2. 私有靜態常量
  3. 私有靜態變量(不太應該有共有變量)
  4. 公有方法
  5. 公有方法所用到的私有方法

總的來說,我們應該把屬性放到類的上面,而把方法放到類的下面,并將私有方法放到所調用的公有方法下面(可以參考《如何寫好一個方法》)。這樣便于在閱讀類中內容的時候可以從上到下逐步地了解類中的細節,符合我們自頂向下的閱讀習慣。

單一職責

我們有時候會覺得類可能太長了。有很多的原因會讓我們有這樣的想法,而其中比較重要的一個原因是:這個類同時承擔了復數個功能。

我們在進行面向對象編程的時候的主要方式是將擁有一些能力的對象用類的形式定義出來,這些能力就是類的方法。舉個例子:可以播放音樂的音箱,那么我們就可以創建一個音箱的類,然后其中有一個方法播放音樂。目前這個類是很好理解的,我們有一個音箱類,然后通過音箱類來實例化對象就可以得到一個音箱,通過調用音箱中的播放方法就可以播放音樂。但隨著功能的擴充,或許我們的音箱變成了移動音箱(注意,我們只有一個音箱),而且增加了一個充電功能,于是我們為這個類增加了一個充電方法。

隨著功能不斷地開發,我們可能會為音箱類中增加許多的與其有關聯的事物,我們可能在音箱類中添加:充電、顯示時間、定時關閉、隨機播放等等工呢功能。在不斷地迭代之后這個類會變得非常的臃腫,但是判斷臃腫與否的條件,便是是否單一職責。

盡管單一職責的這個概念比較容易理解,但是在實際操作的時候卻沒有一個明確的邊界,也就是說要憑感覺。就比如上文中的音箱的例子,如果在只有充電和播放音樂的這種情況下,我們也可以將其寫入到一個類中。但是如果功能變多,比如增加了電量展示、涓流充電等功能,那顯然我們更應該把這些方法放到一個電池的類中,并將電量的屬性也放進去。

所以從可實施的角度上來說的話,我們可以通過兩種方法來幫我判斷這個方法是否滿足單一職責:

  1. 能否為方法起一個合適的名字
  2. 能否通過句簡短的話來描述其功能。

解釋來說,如果無法用一個對象名來描述這個類的話,而只能通過一些通用概念(如處理器、執行器、管理器)來對他進行描述的話,就說明這個類的功能并不單一(當然如果本身代碼規范就是這么定義的就另當別論)。而如果無法用一兩句話來描述類的功能,或者必須用大量的“與”、“或”等詞來對描述做串聯,就說明其承擔了太多的功能了,我們應該將其拆分一下。

內聚

我們在進行面對對象編程的時候經常說的就是類需要“高內聚、低耦合”。我們把類中的方法操作類中的屬性稱做方法與屬性的關聯的話,那么關聯越多的類就是越內聚的。極端一點的話,如果類內所有的方法都使用所有的類屬性的話,那么這個類是最為內聚的。實際情況并不總是如此理想,所以我們可以根據這種關聯關系來判斷類中的內容是否足夠內聚。

所以,如果你發現在在寫完類了之后部分方法只與部分屬性產生關聯,而其他方法則與另外的屬性產生關聯,就說明這兩部分之間是沒有內聚性的。那么我們就可以將其拆分為兩個類,而這兩個類之間將更加的內聚:方法與屬性互相依賴稱為了一個整體。

當我們通過內聚性來分析類后,可能會將一個大類,拆分為多個小類。這樣會增加類的數量從而增加類的復雜性,同時也會讓整體的代碼變多。但是類本身可以通過包路徑來進行分類,所以這種拆分我認為是比較合理的。

可擴展

對于一些有擴展需求的類,盡管他們可能滿足單一職責以及內聚屬性。但是由于這種類本身的擴展性,導致我們會在新的業務需求的時候頻繁地對這種類進行修改與新方法的增加。這種修改導致的問題是在每一次修改代碼或者新增方法的時候都無法保證不會對原有的功能造成影響。雖然我們可以通過單元測試或者集成測試來驗證我們的修改,但是這都會增加我們的工作量。

所以,對于可能會頻繁修改、并進行業務追加的方法類,我們需要特別的為其保留擴展性。我們可以通過實現統一接口或者繼承抽象類、父類的方法,來獲得多個不同擴展能力的子類,而這些子類我們也可以通過策略模式或者責任鏈模式來組織。

對于類來說,對其進行擴展總是好與對其直接進行修改。

可測試

關于這個角度,其實是源于我的另一個問題,就是在傳統的三層框架下,中間的service層我們是否需要編寫一層接口(interface)。我原來的認知是,實際上在絕大多數的情況,這個service我們是不會再進行其他實現的,所以單獨寫一個接口然后再增加對應的Impl只會讓我們在擴展方法的時候更加的繁瑣。

但是現在我發現了直接的用處,那就是:支持了單元測試的進行。

如果我們直接依賴具體的細節,就會對我們的測試帶來挑戰。具體來說,如果我們依賴于一個具體的類的實現的話,那么當我們希望針對其中的細節進行測試的話我們就要對細節之外的內容進行調整,可能包括:系統時間、數據庫字段等內容。但如果我們是使用接口對servce進行調用,那么在我們測試的時候就可以通過直接編寫測試用的service來實現預期的返回內容。從而大大簡化進行測試的難度。

我們通過接口降低了系統之間的耦合度,讓類之間的關系更好理解,也便于測試的進行。而這也是我們的依賴倒置原則(DIP),我們針對抽象編程,讓其不依賴與具體細節,這樣當我們需要調整細節的時候也不會影響上層內容。

最后

我們在coding的過程中總是在進行類的編寫,本篇文章對類的一些編寫注意事項進行了描述,在編寫過程中主要需要注意類的:內部屬性方法順序、類的職責是否單一、是否足夠內聚、是否支持擴展、是否可以進行單元測試。盡管這并非全部需要注意的內容,但如果可以根據這些引發思考便足夠了。

責任編輯:姜華 來源: 今日頭條
相關推薦

2022-03-31 08:09:04

CSS繪制技巧時鐘

2022-04-29 14:38:49

class文件結構分析

2021-07-12 06:11:14

SkyWalking 儀表板UI篇

2022-01-14 11:45:40

JVM 虛擬機Java

2021-07-21 09:48:20

etcd-wal模塊解析數據庫

2021-03-12 09:21:31

MySQL數據庫邏輯架構

2023-03-29 07:45:58

VS編輯區編程工具

2021-04-14 14:16:58

HttpHttp協議網絡協議

2024-06-13 08:34:48

2022-02-17 08:53:38

ElasticSea集群部署

2022-03-22 09:09:17

HookReact前端

2021-06-21 14:36:46

Vite 前端工程化工具

2021-04-01 10:51:55

MySQL鎖機制數據庫

2021-04-08 11:00:56

CountDownLaJava進階開發

2021-01-28 08:55:48

Elasticsear數據庫數據存儲

2022-08-04 08:17:27

React高階組件

2021-07-08 07:30:13

Webpack 前端Tree shakin

2021-05-08 08:36:40

ObjectString前端

2023-03-13 09:31:04

2022-02-25 15:50:05

OpenHarmonToggle組件鴻蒙
點贊
收藏

51CTO技術棧公眾號

国产精品久久久久久久久婷婷| 一区二区三区资源| 国产精品色视频| 国产精成人品免费观看| 日韩色性视频| 精品久久久久久中文字幕| 日韩福利视频| 亚洲欧美激情国产综合久久久| av一区二区在线播放| 91精品国产综合久久久蜜臀粉嫩 | 91av在线免费观看视频| 欧美福利第一页| 在线精品国产亚洲| 欧美午夜精品电影| 可以在线看的av网站| 天天影视久久综合| 91亚洲大成网污www| 国产在线观看精品| 日韩精品在线免费视频| 亚洲天天影视网| 亚洲最新av在线| 精品视频站长推荐| 国产精品美女久久久久| 日本乱码高清不卡字幕| www.av蜜桃| 麻豆影视国产在线观看| 国产日韩欧美麻豆| 久久伊人一区| 欧美 日韩 综合| 国产在线精品不卡| 国产精品白丝jk喷水视频一区| 国产又粗又猛又爽又黄| 色8久久影院午夜场| 亚洲国产乱码最新视频| 路边理发店露脸熟妇泻火| 成人动漫在线播放| 久久精品视频免费观看| 精品日韩电影| 日本黄色不卡视频| 懂色av中文字幕一区二区三区| 久久国产精品久久久久| 国产极品视频在线观看| 精品欧美激情在线观看| 日韩成人免费视频| 日b视频在线观看| 成人三级av在线| 精品美女在线观看| 国产av一区二区三区传媒| 秋霞一区二区| 日韩精品最新网址| 免费网站在线观看黄| 香蕉成人在线| 91精品国产综合久久福利| 欧美第一页浮力影院| 国产欧美在线观看免费| 欧美熟乱第一页| 天天干天天爽天天射| 国产极品久久久久久久久波多结野| 日韩美女啊v在线免费观看| 日本亚洲导航| 18视频免费网址在线观看| 中文字幕第一区综合| 午夜免费电影一区在线观看| 自拍视频在线免费观看| 亚洲视频免费在线| 超碰人人爱人人| 青草av在线| 精品久久久一区| 欧美成人精品欧美一级乱| 少妇一区视频| 5566中文字幕一区二区电影| 国模大尺度视频| 欧美sss在线视频| 亚洲人高潮女人毛茸茸| ass极品国模人体欣赏| 婷婷亚洲五月| 久久久久这里只有精品| 免费观看成人毛片| 久久se这里有精品| 成人影片在线播放| 飘雪影视在线观看免费观看 | 宅男噜噜噜66国产日韩在线观看| 中文字幕久热精品在线视频| 女人裸体性做爰全过| 国产精品毛片一区二区在线看| 日韩精品视频中文在线观看| a级片在线观看| 亚洲电影在线一区二区三区| 欧美激情精品久久久久久变态| 久久午夜精品视频| 国产精品mv在线观看| 2018中文字幕一区二区三区| 亚洲视频在线观看一区二区| 国产不卡高清在线观看视频| 欧美激情论坛| 中文字幕中文字幕在线十八区| 国产精品污www在线观看| 粉嫩av一区二区三区天美传媒 | 高清日韩中文字幕| 亚洲视频电影图片偷拍一区| 91ts人妖另类精品系列| 在线视频日韩| 亚洲精品欧美一区二区三区| 婷婷婷国产在线视频| 综合欧美亚洲日本| 国产熟女高潮视频| 999国产精品一区| 在线视频亚洲欧美| 青青草av在线播放| 国模娜娜一区二区三区| 欧美精品久久久| 3344国产永久在线观看视频| 欧美挠脚心视频网站| 中文字幕日韩三级片| 欧美a级在线| 国产精品欧美日韩一区二区| 熟妇人妻一区二区三区四区| 亚洲精品乱码久久久久| 成人在线激情网| 视频福利一区| 色综合男人天堂| 国产又粗又猛又黄又爽无遮挡| 经典一区二区三区| 日本不卡一区| 涩涩视频在线播放| 亚洲第一精品自拍| 男女性高潮免费网站| 美女在线一区二区| 日本高清久久一区二区三区| 91jq激情在线观看| 日韩女同互慰一区二区| 正在播放国产对白害羞| 日日噜噜夜夜狠狠视频欧美人| 国产精品视频一区国模私拍| 视频一区二区在线播放| 亚洲3atv精品一区二区三区| 乱码一区二区三区| 欧美精选在线| 亚洲专区中文字幕| 黄色网址免费在线观看| 欧美另类变人与禽xxxxx| 日韩欧美黄色网址| 日韩成人一级片| 欧美亚洲另类在线一区二区三区| 一级日本在线| 欧美丝袜丝交足nylons| 欧美激情久久久久久久| 日本午夜精品一区二区三区电影| 国产精品女主播| 成在在线免费视频| 在线观看免费成人| 国产精品麻豆一区| 寂寞少妇一区二区三区| 潘金莲一级淫片aaaaa免费看| 丁香花在线电影| 欧美成人vr18sexvr| 久草视频手机在线观看| youjizz国产精品| 免费在线激情视频| 国产精品一区二区99| 国产欧美精品日韩精品| 91高清在线视频| 欧美一区二区三区喷汁尤物| 久久精品第一页| 99精品久久99久久久久| 日本熟妇人妻xxxxx| 日本在线电影一区二区三区| 国产一区私人高清影院| 3d玉蒲团在线观看| 亚洲电影免费观看高清| 亚洲不卡在线视频| 国产精品久久久爽爽爽麻豆色哟哟| www.av片| 中文有码一区| 91精品国产自产在线| 亚洲性图自拍| 日韩成人在线视频| 中文字幕在线视频第一页| 亚洲欧洲精品天堂一级| 无码人妻精品一区二区三| 久久精品盗摄| 在线一区亚洲| 噜噜噜天天躁狠狠躁夜夜精品| 久久成人国产精品| 人妻少妇一区二区三区| 色综合中文综合网| 成人在线观看小视频| 本田岬高潮一区二区三区| 欧美一级片中文字幕| 亚洲破处大片| 日韩av电影免费在线| 日韩不卡在线视频| 日本精品中文字幕| 亚洲小说区图片| 亚洲网站在线观看| 亚洲av无码一区二区三区性色| 亚洲欧美一区二区在线观看| 乱码一区二区三区| 美女网站在线免费欧美精品| 无码熟妇人妻av在线电影| 国精一区二区| 成人欧美一区二区| 欧美色片在线观看| 国模视频一区二区| 激情成人四房播| 亚洲欧美自拍一区| 欧美天堂在线视频| 69av一区二区三区| 蜜臀尤物一区二区三区直播| 亚洲午夜电影在线观看| 久久午夜精品视频| 久久久久久久精| 国产人成视频在线观看| 国产一区999| 亚洲无吗一区二区三区| 国产日韩一区| wwwwww欧美| 亚洲精品2区| 亚洲国产精品毛片| 亚洲人成伊人成综合图片| 福利视频一区二区三区| 亚洲福利影视| 国产精品视频永久免费播放| 人成在线免费网站| 久久久久久久电影一区| 欧美黄色激情| 中文字幕日韩综合av| 国产在线三区| 精品亚洲va在线va天堂资源站| 区一区二在线观看| 精品美女永久免费视频| 久久精品国产亚洲av无码娇色| www.色综合.com| www.黄色网| 国产东北露脸精品视频| 性色av浪潮av| 国产在线乱码一区二区三区| 五月天开心婷婷| 久久机这里只有精品| 青青草av网站| 男女男精品视频网| 污片在线免费看| 毛片av一区二区三区| 国产一二三区av| 秋霞电影网一区二区| 日本熟妇人妻xxxxx| 久久久精品网| 午夜久久久精品| 蜜臀av在线播放一区二区三区| r级无码视频在线观看| 国产一区亚洲| 国产美女主播在线| 一区二区毛片| 欧美日韩怡红院| 久久国产乱子精品免费女| 黄色手机在线视频| 国产一区美女在线| 香蕉视频免费网站| 丁香激情综合国产| 北岛玲一区二区| 国产偷v国产偷v亚洲高清| 中文字幕第24页| 亚洲天堂2014| 久久亚洲国产成人精品性色| 亚洲福利视频一区二区| 亚洲国产成人精品激情在线| 一本久道久久综合中文字幕| 亚洲av无码乱码国产精品fc2| 亚洲国产精品一区二区www在线| 亚洲午夜精品久久久久久高潮 | 亚洲综合第一页| 91蝌蚪精品视频| 久久久久久欧美精品色一二三四| 国产亚洲久久| 国产日韩一区二区| 国产一区不卡| 欧美一级黄色录像片| 亚洲欧洲一区二区天堂久久| 日韩精品一区中文字幕| 久久黄色级2电影| 女同性恋一区二区三区| 国产无一区二区| 久久久久成人片免费观看蜜芽| 亚洲国产精华液网站w| 黄色香蕉视频在线观看| 夜夜亚洲天天久久| 99re热视频| 日韩一区二区电影| 九色在线免费| 欧美国产日本在线| 欧美xo影院| 97久草视频| 精品美女久久久| 精品无码国产一区二区三区av| 欧美一区久久| 国产一级不卡毛片| 国产乱码精品一区二区三区av| 九九九九九九九九| 久久美女艺术照精彩视频福利播放| 精品久久久久久无码人妻| 国产欧美中文在线| 国产午夜视频在线| 欧美日韩你懂的| 色播色播色播色播色播在线| 视频直播国产精品| 澳门成人av网| av在线不卡一区| 久久国产成人精品| 欧美日韩一区二区在线免费观看| 久久www成人_看片免费不卡| 亚洲综合伊人久久| 国产欧美日韩另类一区| 免看一级a毛片一片成人不卡| 亚洲444eee在线观看| 国产精品嫩草影院精东| 亚洲开心激情网| gogo高清在线播放免费| 成人免费网站在线| 欧美中文一区二区| 无码aⅴ精品一区二区三区浪潮| 久久综合伊人| 无码任你躁久久久久久老妇| 亚洲三级小视频| 亚洲资源在线播放| 一区二区三区四区视频| 黄色美女视频在线观看| 91超碰在线电影| 成人情趣视频| 91福利国产成人精品播放| 久久久久国产精品麻豆 | 一区二区三区不卡视频| 中文字幕777| 夜夜嗨av一区二区三区免费区| 午夜免费福利在线观看| 国产成人精品久久二区二区91| 日本成人在线网站| 日韩欧美三级一区二区| 久久香蕉精品| 亚洲国产av一区| 91成人看片片| 国外av在线| 国产精品69av| 欧美男gay| 国产免费视频传媒| 国产精品视频观看| 超碰在线免费97| 欲色天天网综合久久| 福利一区在线| 亚洲欧美久久234| 久久99精品久久久久久国产越南 | 777精品视频| 成人在线超碰| 国产v片免费观看| 91麻豆国产自产在线观看| 久久久久久久黄色片| 日韩高清人体午夜| 女生影院久久| 欧美一区2区三区4区公司二百| 影音先锋日韩在线| 久久综合在线观看| 一卡二卡欧美日韩| 天天操天天操天天| 国产91色在线播放| 999视频精品| 蜜桃视频无码区在线观看| 亚洲国产日产av| 精品999视频| 成人激情视频在线播放| 欧美aa国产视频| 加勒比精品视频| 欧美在线视频全部完| 国产高清一区二区三区视频| 99热在线国产| 日韩影院免费视频| 国产色无码精品视频国产| 日韩精品一区二| 欧美国产大片| 天天做天天爱天天高潮| 国产成人av一区二区三区在线| 五月婷婷婷婷婷| 欧美va在线播放| 日韩国产网站| 久久久国内精品| 久久精品一区八戒影视| 国产色综合视频| 欧美在线影院在线视频| 欧美gay男男猛男无套| 色诱av手机版| 欧美午夜影院一区| 免费不卡av| 一区二区三区四区五区视频| 懂色av一区二区三区免费看| 精人妻无码一区二区三区| 精品视频9999| 精品国产一区二区三区香蕉沈先生 | 在线亚洲一区二区| 国产1区在线| 日本一区视频在线观看| 国产91露脸合集magnet| 最近中文字幕在线观看|